ich hab einen kleinen unix daemon geschrieben welcher alle heiligen zeiten mal ein verzeichnis auf verschieden dateien kontrolliert. ist so eine datei vorhanden (geht nach einem muster "dateiname1234" also ist es immer eine andere datei mit fortlaufender nr) öffnet er sie und arbeitet den inhalt ab. das ganze funktioniert auch nach dem starten bzw. den ganzen tag ... nur wenn ich ihn über nacht laufen lasse und es am nächsten tag nochmal versuche kann er eine neue datei nie öffnen (wird mithilfe eines scripts immer neu generiert) ...
das ganze sieht grob ca. so aus:
C++:
while(1) {
execdir = opendir(rootpath.c_str());
do { entry = readdir(execdir); actual_entry = entry->d_name; if(entry) { input.close(); input.clear(); input.open((rootpath+actual_entry).c_str()); if(!input.good()) { // schreibe error ins log und beende den daemon } // ansonsten hol ich mir den inhalt heraus ... getline(input,command); /* get first line */ ... input.close(); } } while(entry); }
wobei input ein ifstream und rootpath ein string ist (usw. ...)
Kann es sein, dass nur Dateien geöffnet werden können, die vorher schon vorhanden waren. Möglicherweise können Dateien nicht geöffnet werden, weil der andere Prozess, der die schreibt noch nicht richtig geschlossen hat.
nur: dann müsste es doch gehn wenn ich dann etwas warte und es nochmal versuche zu öffnen (was ja ned hinhaut )
bzw. dürfte es ja dann vorher auch nicht funktionieren (also ich müsste irgendwann beim testen das selbe phänomen sehen können) aber es tritt anscheinend ausschließlich nach einer laufzeit auf die mind. eine nacht dauert *löl*
ja nochwas, hab gestern zum testen an die 40 files in den ordner gestellt ... die hat er alle wunderbar nach der reihe abgearbeitet ohne irgendewas ... ich verstehs nicht mehr