Parenthood seems to be lost when the parent is exeeced

Laurent Najman l.najman@esiee.fr
Tue Nov 3 10:59:00 GMT 2009


Hi,
The parenthood seems to be lost when the parent is execed.
Here is a sample code
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <windows.h>
int main(int argc, char **argv)
{
 int status;
 
 if (argc > 1) {
 printf ("Execed Parent: Cygwin: %d Windows: %lu \n",
 getpid (), GetCurrentProcessId ());
 wait(NULL);
 printf("Parent has waited its child\n");
 return 0;
 }
 switch (fork ()) {
 case 0: // Child
 sleep(1);
 printf("Child Cygwin: %d Windows: %lu Parent= %d has ended\n",
 getpid (), GetCurrentProcessId (), getppid());
 break;
 default: // Parent
 printf ("Parent : Cygwin: %d Windows: %lu\n",
 getpid (), GetCurrentProcessId (), getppid());
 execl ("./x", "x", "child", NULL);
 break;
 }
 return 0;
}
Here is the execution of the code
Laurent Najman@PC4354B /cygdrive/d/src/XXX
$ gcc -o x x.c
Laurent Najman@PC4354B /cygdrive/d/src/XXX
$ ./x
Parent : Cygwin: 4308 Windows: 5080
Execed Parent: Cygwin: 4308 Windows: 4728
Parent has waited its child
Laurent Najman@PC4354B /cygdrive/d/src/XXX
$ Child Cygwin: 4784 Windows: 4784 Parent= 1 has ended
Normally, I would expect the parent to be 4308, and I would expect that 
parent to wait for its child.
Is this cygwin behavior a normal behavior?
Thanks in advance,
Laurent Najman
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /