父进程创建一个子进程,那么子进程退出时,会不会告诉父进程它要退出了?其实在子进程退出时,会给父进程发送一个SIGCHLD,17号信号。
那么下面用代码来验证一下:
首先要捕捉SIGCHLD信号,输出 i am %d signal ;
再创建子进程,在子进程中输出 i am child,然后退出;
在父进程中每隔1s输出 i am father。
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
void catchsig(int sig)
{
printf("i am %d signal\n", sig);
}
int main()
{
signal(SIGCHLD, catchsig);
pid_t id = fork();
if(id == 0)
{
printf("i am child ,quit!pid:%d\n", getpid());
exit(1);
}
else
{
while(1)
{
printf("i am father,runing!pid:%d\n", getpid());
sleep(1);
}
}
return 0;
}