当前位置: 技术问答>linux和unix
帮忙给看看C程序吧:子进程没有立即结束是正常的吗?
来源: 互联网 发布时间:2015-11-15
本文导语: 父进程启动了若干个子进程,然后我在程序运行期间kill 父进程id,当父进程接到SIGTERM信号时,会执行语句,KILL掉子进程。 大体的代码如下: 父进程代码: ... fork();/*生成子进程*/ ... signal(SIGTERM, SigProc); if (g_boExitC...
父进程启动了若干个子进程,然后我在程序运行期间kill 父进程id,当父进程接到SIGTERM信号时,会执行语句,KILL掉子进程。
大体的代码如下:
父进程代码:
...
fork();/*生成子进程*/
...
signal(SIGTERM, SigProc);
if (g_boExitCmd ) {
SendSignToChild();
}
/*信号处理函数*/
void SigProc(int sig) {
if (sig == SIGTERM) {
g_boExitCmd = true;
signal(SIGTERM, SigProc);
}
}
bool SendSignToChild() {
...
kill(g_stMgr[j].p_info[i].pid, SIGTERM);
...
}
子进程的代码:
#include
int main( int argc, char **argv){
pid_t pid=getpid();
int i;
for(i=0;i
大体的代码如下:
父进程代码:
...
fork();/*生成子进程*/
...
signal(SIGTERM, SigProc);
if (g_boExitCmd ) {
SendSignToChild();
}
/*信号处理函数*/
void SigProc(int sig) {
if (sig == SIGTERM) {
g_boExitCmd = true;
signal(SIGTERM, SigProc);
}
}
bool SendSignToChild() {
...
kill(g_stMgr[j].p_info[i].pid, SIGTERM);
...
}
子进程的代码:
#include
int main( int argc, char **argv){
pid_t pid=getpid();
int i;
for(i=0;i