This is the mail archive of the
cygwin-developers@sources.redhat.com
mailing list for the Cygwin project.
Re: EINTR after SIGSTOP/SIGCONT
- To: cygwin-developers at sourceware dot cygnus dot com
- Subject: Re: EINTR after SIGSTOP/SIGCONT
- From: Chris Faylor <cgf at cygnus dot com>
- Date: Fri, 15 Sep 2000 11:30:36 -0400
- References: <18275375909.20000915165822@logos-m.ru>
- Reply-To: cygwin-developers at sources dot redhat dot com
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/