Dateioperationen wie stat funktionieren nicht als Daemon

Antworten
Nachricht
Autor
ThorstenR

Dateioperationen wie stat funktionieren nicht als Daemon

#1 Beitrag von ThorstenR » 16. Okt 2007 15:23

Hallo!

Ich wollte mein Konsolenprogramm als Daemon laufen lassen. Habe mir dazu eine Funktion geschrieben die ganz grob in etwa so aussieht:

Code: Alles auswählen

void start_daemon()
{
...
fork();
chdir("/tmp");
umask(0);
for(i=sysconf(_SC_OPEN_MAX); i>0; i--) close(i);
...
}
Jetzt habe ich folgendes Problem. In meiner main() habe ich folgenden Codeabschnitt:

Code: Alles auswählen

...
debug(INFO, "Lese ./netref.conf ein.");
	sprintf(cFilename, "./netref.conf");
debug(INFO, "BLAAAA");
	if ( stat( cFilename, &tConfAttr ) != 0 )
	{
		debug(INFO, "netref.conf im lokalen Verzeichnis nicht gefunden. Lese /etc/netref/netref.conf ein.");
		sprintf(cFilename, "/etc/netref/netref.conf");
		if ( stat( cFilename, &tConfAttr ) != 0 )
		{
			debug(ERROR, "netref.conf wurde nicht gefunden! Beende daher NetRef!!");
			return(EXIT_FAILURE);
		}
	}
debug (INFO, "BLUB");
...
Läuft das Programm als Daemon ist de letzte Debugausgabe "BLAAA". Als normales Programm komme ich aber bis zum "BLUB". Ich habe absolut keine Idee wiese das Programm als Daemon sich nach dem BLAAA beendet. Noch nicht mal in die if-Abfrage geht der Daemon, sonst würde ja noch die dort vorhandene Debugausgabe durchgeführt.

Hab ich irgendetwas übersehen?

Gruß
Thorsten

Benutzeravatar
hjb
Pro-Linux
Beiträge: 3264
Registriert: 15. Aug 1999 16:59
Wohnort: Bruchsal
Kontaktdaten:

#2 Beitrag von hjb » 17. Okt 2007 10:59

Hi!

Natürlich wird das stat ausgeführt. Verfolge es doch mal mit strace. Der Fehler ist vielleicht eher in deiner debug-Funktion.

Grüße,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Antworten