在另一个函数

时间:2018-02-06 10:08:42

标签: c linux process fork

我有一个问题。我有一个函数A,我做了一个fork然后我想在完成一些指令或用户请求后杀死该fork。 像这样:

  int main{
    bool child_started =false;
    pid_t child_pid;
    while bool{
    //request user to make input
    //users makes a input.

    if(input == 1){
    functionA();
    }else if(input == 2 && child_started){
    //kill child
    //I tried kill(child_pid,SIGKILL); but it doesnt work
    }

和功能A

void functionA(){

child_pid= fork();
if(child_pid == 0){
child_started = true;
//instructions
exit(0); //I tried this but i get a zombie process
child_started = false;

}else if (child_pid<0){
//error handling
}
}

有什么想法吗?我尝试了许多方法,但没有成功。

感谢

functionA()exit()之前的说明非常耗时。我们假设这些指令需要10分钟才能执行。我的观点是在他们之后自动杀死子进程,这就是exit()存在的原因。 在主要方面,用户可以决定在输入2的那些10分钟之前杀死孩子。

------------------------------解决---------------- ------------------------

如果有人遇到同样的问题。不要浪费你的时间阅读非贡献的答案。我解决了在父亲遇害后添加wait()的问题。

1 个答案:

答案 0 :(得分:0)

fork()为子进程返回0,为父进程返回非零。在创建它之后,你立即从子进程终止(exit()终止进程它不是返回)。当用户尝试使用命令kill时如果孩子已经完成了执行,那么杀死就不会在这里工作。