#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
void signal_hander()
{//处理子进程退出信号
int child_status;
wait(&child_status);
printf("child exited.\n");
}
int main(int argc,char **argv)
{//进程
pid_t pid;
int child_status;
signal(SIGCHLD,signal_hander);
if ((pid=fork())==0){
printf("child process run!\n");
exit(0);
}else{
printf("parent process run!\n");
sleep(10);
}
exit(0);
}
deepfuture-lx@deepfuture-lx-desktop:/media/LX/deepfuture$ gcc -o test10 test10.ctest10.c: In function ‘main’:
test10.c:20: warning: incompatible implicit declaration of built-in function ‘exit’
test10.c:26: warning: incompatible implicit declaration of built-in function ‘exit’
deepfuture-lx@deepfuture-lx-desktop:/media/LX/deepfuture$ ./test1
0parent process run!
child process run!
child exited.
本文介绍了一个简单的C语言程序,该程序演示了如何使用信号处理函数来捕获子进程退出信号并进行相应的处理。通过fork创建子进程,并在父进程中设置SIGCHLD信号处理函数,在子进程退出时调用wait来清理资源。
1267

被折叠的 条评论
为什么被折叠?



