Mail Archives: cygwin/1998/03/08/16:27:42
In article <C1A9DAABC292D111A4D90000F879A2BA0E86 AT NTMAIL>,
Ian Collins <Ian AT kiwiplan DOT co DOT nz> wrote:
>Can someone help me. I have a problem with signal handling (notably
>alarm calls) on b19. The problem was also around in b18, but I was
>hoping....
>
>The problem can be shown in an example program, as follows,
>
>#include <stdio.h>
>#include <signal.h>
>
>/*
> Designed to test the alarm calls.
> */
>main()
>{
> int ch;
> extern void handler();
> while (1) {
> printf("Setting alarm\n");
> if (signal(SIGALRM, handler) == SIG_ERR) return -1;
> alarm(5);
> printf("Set alarm. Getting input\n");
> ch = getchar();
> printf("getchar returned %d\n", ch);
> }
>}
>
>void handler()
>{
> printf("In handler. I want getchar to return now like Unix does\n");
>}
>
>When this program is run on most Unix machines (OK, AIX needs kicking to
>get it to work), the getchar will return after the timeout occurs.
>What we see however is that after the timeout handler is called, the
>getchar does not return, it still waits for a character to be input.
>
>Is there any way I can get getchar to interrupt and return? This is a
>showstopper for me ar present. Can anyone help!
You've hit one of the biggest problems in cygwin but I don't know of any
way around this behavior due to Win32 behavior. It is not possible to
interrupt a blocking read in Win32. That's what you're expecting in the
code above.
I wish there was some way to do this in a way that worked on all
implementations of Win32 but I'm not aware of any. Sorry.
--
http://www.bbc.com/ cgf AT bbc DOT com "Strange how unreal
VMS=>UNIX Solutions Boston Business Computing the real can be."
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request AT cygnus DOT com" with one line of text: "help".
- Raw text -