?
Ruf das Programm über ein shellscript auf:
#!/bin/sh
prog >logfile 2>&1
Die Moeglichkeit kenn ich, das Programm wird sowieso ueber das Startscript aufgerufen. Das Problem ist aber dabei, das stdout gepuffert wird, d.h. bei einem Abbruch ueber Ctrl-C fehlen u.U. die Ausgaben oder sind in der falschen Reihenfolge.
Jedenfalls funktioniert das hier:
~% cat a.c
#include <stdio.h>
int main()
{
close(2);
dup(1);
perror("hallo");
}
~% gcc a.c
~% ./a.out >/dev/null
~%
Ja, das funktioniert, hat aber wieder das Problem, dass die Ausgaben gepuffert werden.
Ich hab das Problem bei meinem Programm aber jetzt gefunden!
Man muss zuerst die Datei mit freopen() oeffnen, dann den stdout ungepuffert machen und erst dann close() und dup().
Ungefaehr so:
logfile = freopen(name_logfile, "wb", stdout);
setvbuf(logfile, NULL, _IONBF , 0);
close(2);
dup(1);
perror("error");
printf("hallo");
Dann kommen alle Ausgaben schoen der Reihe nach und sofort ins Logfile.
Auf jeden Fall vielen Dank fuer die schnelle Hilfe!
Gruss aus Australien
joemu
P.S. Und ob das jetzt Mist ist, darueber kann man streiten, hauptsache es funktioniert