C 关闭另一函数上父函数的子函数
我有个问题。我有一个函数a,其中我做了一个fork,然后我想在一些指令完成后或者在用户请求时终止这个fork。 大概是这样的:C 关闭另一函数上父函数的子函数,c,linux,process,fork,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(); }els
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
}
}
void function(){
child_pid=fork();
如果(子项pid==0){
child_start=true;
//指示
退出(0);//我尝试了此操作,但得到了一个僵尸进程
child_start=false;
}else if(child_pidfork()对于子进程返回0,对于父进程返回非零。在这里,您在创建子进程后立即终止它(exit()terminate process,它不是返回)。当用户尝试使用命令行终止时,如果子进程已经完成执行,那么kill在这里不起作用。这是什么意思“它不起作用”?你能详细说明一下吗?当然,请尝试创建一个演示给我们看。至于僵尸进程,父进程需要让其子进程“收获”僵尸。好吧,我认为很清楚什么是“它不起作用”"意思是。意思是它不起作用。我想从父母那里杀了一个孩子,但我尝试的不起作用。你需要告诉我们它怎么不起作用。在问题本身的主体中。应该发生什么,发生了什么。假设或猜测会导致错误答案。我还建议你检查返回的内容,如果返回失败检查errno
查看错误是什么。所以问题是僵尸进程的问题,而不是kill
本身的问题?如果我们不知道这些细节,因为您没有告诉我们,您认为我们将如何帮助您?请阅读,尤其是。最重要的是,请再次检查我的代码。在退出()之前这里有一些说明。这些说明需要一些时间,用户有机会故意向孩子输入一个2。这就是我所寻求的。用户有机会意味着它一直不是一个定义的行为,你不确定孩子是否已经执行了。试着看看kill返回什么,看看孩子是否在场或者当你试图杀死它的时候没有。我检查孩子是否已经完成,我只是没有在这里添加它。我有一个bool变量指示孩子的状态。我将在示例代码中添加它