fork handler for parent process called in both parent and child process
Andreas Steenpass
steenpass@mathematik.uni-kl.de
Wed Sep 25 10:19:00 GMT 2013
Please consider the following testcase:
####################
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h> // compile with -lpthread or -pthread
void atfork_prepare()
{
printf("atfork_prepare, pid: %d\n", getpid());
}
void atfork_parent()
{
printf("atfork_parent, pid: %d\n", getpid());
}
void atfork_child()
{
printf("atfork_child, pid: %d\n", getpid());
}
void main()
{
pthread_atfork(atfork_prepare, atfork_parent, atfork_child);
pid_t pid = fork();
if (pid == 0) { // child
exit(0);
}
printf("pid of parent process: %d\n", getpid());
printf("pid of child process: %d\n", pid);
waitpid(pid, NULL, 0);
exit(0);
}
####################
On Cygwin, I get:
$ ./testcase
atfork_prepare, pid: 11560
atfork_child, pid: 7744
atfork_parent, pid: 7744
atfork_parent, pid: 11560
pid of parent process: 11560
pid of child process: 7744
atfork_parent() is called in both the parent and the child process, but
as far as I understand, it should be called in the parent process only.
Best regards,
Andreas
--
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