EINTR after SIGSTOP/SIGCONT

Chris Faylor cgf@cygnus.com
Fri Sep 15 08:31:00 GMT 2000


Cygwin does not have "restartable" I/O.  That means that reads on
"slow" devices like pipes or ttys will be interrupted by a signal.

cgf

On Fri, Sep 15, 2000 at 04:58:22PM +0400, Egor Duda wrote:
>Hi!
>
>  this program:
>
>===================================================================
>#include <errno.h>
>#include <stdio.h>
>#include <signal.h>
>
>int main ( int argc, char** argv )
>{
>  char buf[10];
>  int pid;
>  int a[2];
>  int rc;
>
>  pipe ( a );
>  pid = fork ();
>  if ( pid == 0 )
>    {
>      rc = read ( a[0], buf, 1 );
>      if ( rc < 0 ) perror ( "error reading from pipe" );
>    }
>  else  
>    {
>      kill ( pid, SIGSTOP );
>      sleep(1);
>      kill ( pid, SIGCONT );
>      sleep(1);
>      write ( a[1], buf, 1 );
>      waitpid ( pid );
>    }
>}
>===================================================================
>
>prints `error reading from pipe: Interrupted system call' on cygwin
>and  none  on linux. is it intended behavior, or cygwin shouldn't post
>"signal_arrived" event on SIGCONT signal?
>
>Egor.            mailto:deo@logos-m.ru ICQ 5165414 FidoNet 2:5020/496.19
>

-- 
cgf@cygnus.com                        Cygnus Solutions, a Red Hat company
http://sourceware.cygnus.com/         http://www.redhat.com/


More information about the Cygwin-developers mailing list