Re: probleme de C

Page principale

Répondre à ce message
Auteur: dominique Billard
Date:  
À: guilde
Sujet: Re: probleme de C
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