Messages in this thread | | | From | Halesh S <> | Subject | parent process behaviour to signal after vfork() | Date | Tue, 28 Oct 2008 06:43:19 +0000 (UTC) |
| |
Hi,
Please find the below test code...
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> int x = 0; typedef void (*sighandler_t)(int); void fun() { printf("SIGNAL CAUGHT\n"); }
int main() { int pid;
signal(SIGINT, (sighandler_t)fun); signal(SIGSEGV, (sighandler_t)fun); pid = vfork();
if ( pid == 0 ) { printf(" I am child - %d \n", pid); x++; raise(SIGINT); printf("x = %d\n", x); exit(0); } else { printf(" I am parent - %d\n", pid); raise(SIGSEGV); printf("x = %d\n", x); } }
Why the parent process is not able to handle/respond the signals, when a child once handles the signal, child is created using vfork().
In vfork() man page - "Signals to the parent arrive after the child releases the parent's memory."
How to make sure that child has released the parent memory..??
Thanks, Halesh
| |