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.