>Ok. In that event, please provide a simple test case. Christopher, Corinna:
Thanks for you help on this! Here's a short program to recreate this problem: ("main.c") ===================================================== int main(int argc, char *argv[]) { int pid, sid, rc; if ((pid = fork()) == 0) { // child thread pid = getppid(); while(1) { rc = sleep(10); printf("child is alive...\n"); if ((sid = getpgid(pid)) == -1) { printf("exiting child process...rc=2\n"); exit(2); } } } else { // parent thread while(1) { rc = sleep(10); printf("parent is alive...\n"); // check if our child process has been killed if ((sid = getpgid(pid)) == -1) exit(3); printf("getpgid of child pid:%d returned pid:%d\n", pid, sid); } } } ========================================== and here are the steps I used to find the problem: 1) bring up Cygwin shell 1 2) gcc main.c <create executable> 3) a.exe <run executable> 4) let program run 10-15 seconds to see output from parent and child 5) bring up Cygwin shell 2 6) ps <to see PIDs of parent and child> 7) kill -9 <child PID> 8) observe that parent continues to run, and sees the parent's PID reported as the result of the getpgid BTW, the same problem occurs if the parent PID is killed - the child continues to see that the parent PID is alive. The general problem I'm trying to solve here is: Given a long-lived parent process and a long-lived child process, I want the parent and child to be able to detect if the child or parent has died, and if so, exit. Thanks again for your kind assistance. Gavin Bowlby <[EMAIL PROTECTED]> __________________________________________________ Do you Yahoo!? Yahoo! Tax Center - File online, calculators, forms, and more http://tax.yahoo.com -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/