Gregory Mounie wrote:
>
> Salut,
>
> Ton programme ne specifie absolument pas ce qu'il dois faire une fois
> qu'il a attrape le signal !
>
> Sous solaris, la semantique du read() est celle que tu attends
> (man read)
> If a read() is interrupted by a signal before it reads any
> data, it will return -1 with errno set to EINTR.
>
> If a read() is interrupted by a signal after it has success-
> fully read some data, it will return the number of bytes
> read.
>
> Sous linux, le man dis (il a tord, tu as raison) que
> this may hap
> pen for example because fewer bytes are actually available
> right now (maybe because we were close to end-of-file, or
> because we are reading from a pipe, or from a terminal),
> or because read() was interrupted by a signal.
>
> mais je pense que le fichier info de la glibc 2(je ne l'ai pas sous la
> main) dois indiquer que read ne retourne pas meme si il a recu
> un signal par defaut. Son comportement doit etre reglable avec
> ioctl()
>
> Gregory
Precision
Le meme programe compilé sous redhat 4.2 et rapatrié sur Mandrake
fonctionne correctement
resultat :
xxxxsignal catched: 2
return from read -1
et retour au prompt
compilé avec Mandrake et libc6
xxxxxsignal catched: 2
signal catched: 2
signal catched: 2
signal catched: 2
xxxxx
return from read 6
Le programme ne s'interrompt jamais avec Ctrl C
il faut faire Return a la fin donc Ctrl C n'interrompt plus le READ
Linuxement
Dom