Damit kann der Corba-Mimmsfreund wie mit tail(1) verschiedene herkömmliche Logdateien überwachen.
pfad facility programm pid priowobei
Alert | action must be taken immediately |
Crit | critical conditions |
Err | error condition |
Warning | warning Condition |
Notice | normal, but significant, condition |
Info | informational message |
Debug | debug message |
# fifo2ev # Überwache messages und mail # path facility prog pid prio #----------------------------------------- /var/log/messages sys messages -1 Notice /var/log/mail mail mail -1 Notice
Die Dateien/Fifos werden mit O_NONBLOCK geöffnet. So blockiert das open(2) nicht, wenn kein Schreiber da ist.
Wenn das read(2) 0 liefert, heißt dieses, daß das Dateiende erreicht wurde. Dieses wiederholt sich, bis an die Datei angefügt wird. (Es wäre ja denkbar, daß der Descriptor auf nicht lesebereit gesetzt würde, es ist aber so.) Aus diesem Grunde wird die Callback-Struktur in diesem Fall aus der Lese-Ereignissen das Dispatchers entfernt und mit einer Zeit von 5 Sekunden in die Zeitereignisschlange eingereiht. Nachdem die Zeit abgelaufen ist, wird wieder ein lesen versucht. Ist dieses Erfolgreicht, so wird die Callback-Struktur wieder in die Lese-Ereigniswarteschlange des Dispatchers eingefügt.
Bei MICO werden nach Eintreten des Zeitereignises automatisch die Callback-Struktur aus der Warteschange entfernt. (Eine Alternative findet man bei Qt, dort kann man angeben, ob man ein Ereignis einmalig oder periodisch haben möchte, wobei man eben bei MICO periodische Zeitereignisse dadurch erreicht, daß man bei eintreten eines Ereignisses gliech wieder ein neues bestellt).
Beispielsweise bei UUCP brauchen wir das Merkmal, daß die Logdatei immer wieder durch Instanzen geöffnet und danach wieder geschlossen werden kann.
Fifos (named Pipes) erzeugt man mit
mkfifo Dateiname
oder mit
mknod Dateiname p