Le 12370ième jour après Epoch, [EMAIL PROTECTED] écrivait: > Le 14 nov. 03, à 17:56, Erwan David a écrit : >>>>> En effet j'etais tombe sur une page man de BSD sur google. >>>>> Je pense que le plus simple est que mon script ouvre le fichier >>>>> mail.log en lecture continue ca sera plus simple. >>>> >>>> J'opterais plutôt pour la solution que quelqu'un t'a déjà >>>> proposée: un >>>> tube nommé et ton prog qui lit dedans, avec un select () pour ne pas >>>> perdre de temps à boucler. >>> >>> Que est l'intérêt d'un select ? Un read est bloquant sur un pipe, >>> si je >>> ne m'abuse. >> >> Pour ne pas bloquer ? > > de toute facon j'ai fait un read bloquant en faisant un open sur un > tail -f sur le fichier > qui m'interesse, ca marche tres bien et j'ai un fork qui gere la > distribution des stats calcules. > Je vois pas l'interet de ne pas bloquer sur ce genre de truc.
Attention au tail -f ... Dans le cas d'une rotation de log, ça risque de poser des problèmes. L'utilisation de la syntaxe décrite dans le man de syslog.conf est semble-t-il la meilleure: Named Pipes This version of syslogd(8) has support for logging output to named pipes (fifos). A fifo or named pipe can be used as a destination for log messages by prepending a pipe symbol (``|'') to the name of the file. This is handy for debugging. Note that the fifo must be created with the mkfifo(1) command before syslogd(8) is started. Tu fais un mkfifo sur /var/run/mail_log par exemple, puis tu dis à syslogd: |/var/run/mail_log et tu fais ton read (bloquant ou pas, c'est à toi de choisir) sur /var/run/mail_log ... Attention, au reboot il se peut que /var/run soit effacé (je me souviens plus, a toi de chercher), dans ce cas il faut refaire le tube nommé. PS: Le select() est intéressant à manipuler, car tu peux décider de faire des reads au moment le plus opportun, et éventuellement de faire d'autres choses (relecture de la config par ex.) en cas de réception de certains signaux. -- A good memory does not equal pale ink.