Linux C中父进程退出时,使用什么方法可使子进程退出?该如何解决
Linux C中父进程退出时,使用什么方法可使子进程退出?
Linux C中父进程退出时,使用什么方法可使子进程退出:
我的程序大致是这样的:
当parameter=1的时候则程序结束;
当parameter=2的时候创建子进程;
当有parameter不断传过来的时候就不断有子进程创建。
当智能通过传递参数来结束程序时,程序就会退出,问题是:
☆☆程序退出时,该如何结束这些子进程?请各位给分析分析,谢谢!
------解决方案--------------------
1. 等所有子进程退出后,父进程再退出。
2. 发signal杀死子进程。
------解决方案--------------------
------解决方案--------------------
fork() 之后的全部,直到遇到exit,或者main()函数返回
------解决方案--------------------
在lz的场景中,如果杀死所有的残留子进程,可以使用
kill(0, SIGTERM);
这样会给同组的所有进程发送SIGTERM信号
------解决方案--------------------
kill(pid,SIG_KILL);
调用kill函数,参数是子进程ID,另一个参数忘了
------解决方案--------------------
使用waitpid(pid_t pid,int *status,int options)函数
函数说明:waitpid会暂时停止目前的执行,直到有信号来到或者子进程结束。
具体参数说明自己百度一下waitpid 函数
------解决方案--------------------
pid_t pid = fork()
if (pid > 0) {
// 在父进程中 这个时候 pid 是子进程的 pid 值
kill (pid, SIGTERM); // 发送 SIGTERM 信号给子进程 默认操作处理为 “game over”
} else if (pid == 0) {
// 子进程 中
} else {
// 创建子进程失败
}
// 当然父进程中最好处理一下 SIG_CHLD 信号
Linux C中父进程退出时,使用什么方法可使子进程退出:
我的程序大致是这样的:
- C/C++ code
int main(){ int parameter; //其他进程通过消息队列给parameter传递参数 while(1){ if(parameter==1) { return 0; } else if(parameter==2) { if (!fork()) { printf("Hello!\n") ; } } else{ continue; } } }
当parameter=1的时候则程序结束;
当parameter=2的时候创建子进程;
当有parameter不断传过来的时候就不断有子进程创建。
当智能通过传递参数来结束程序时,程序就会退出,问题是:
☆☆程序退出时,该如何结束这些子进程?请各位给分析分析,谢谢!
------解决方案--------------------
1. 等所有子进程退出后,父进程再退出。
2. 发signal杀死子进程。
------解决方案--------------------
------解决方案--------------------
fork() 之后的全部,直到遇到exit,或者main()函数返回
------解决方案--------------------
在lz的场景中,如果杀死所有的残留子进程,可以使用
kill(0, SIGTERM);
这样会给同组的所有进程发送SIGTERM信号
------解决方案--------------------
kill(pid,SIG_KILL);
调用kill函数,参数是子进程ID,另一个参数忘了
------解决方案--------------------
使用waitpid(pid_t pid,int *status,int options)函数
函数说明:waitpid会暂时停止目前的执行,直到有信号来到或者子进程结束。
具体参数说明自己百度一下waitpid 函数
------解决方案--------------------
pid_t pid = fork()
if (pid > 0) {
// 在父进程中 这个时候 pid 是子进程的 pid 值
kill (pid, SIGTERM); // 发送 SIGTERM 信号给子进程 默认操作处理为 “game over”
} else if (pid == 0) {
// 子进程 中
} else {
// 创建子进程失败
}
// 当然父进程中最好处理一下 SIG_CHLD 信号