Linux C中父进程退出时,使用什么方法可使子进程退出?该如何解决

Linux C中父进程退出时,使用什么方法可使子进程退出?
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杀死子进程。
------解决方案--------------------
探讨

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 信号