在C中重定向输出时杀死并没有真正杀死

时间:2017-11-26 11:21:58

标签: c operating-system fork system-calls kill

我有一个父进程,我有一个while循环。在那个while循环中我创建了孩子(计数次数)。如果在任何子节点中发生错误,我不希望将任何其他内容写入标准输出,只写第一条错误消息。

发生错误时,我希望程序关闭所有子项和父项,我该怎么做。我在尝试:

while(count--) {
    pid = fork();
    if(pid > 0){
      wait(NULL); 
      if(execlp(command1,command2,(char *)NULL) < 0){ // error occured
        char str[1024] = "errr";
        perror(str); 
        sprintf(str, "kill -SIGINT %d >> /dev/null 2>&1",getppid());  
        system(str); 
      }
  }

但它不起作用,它多次打印错误

我想在发生单个错误时终止/终止程序,以便不打印其他消息

count为5,command1和command 2为“ls”

1 个答案:

答案 0 :(得分:0)

答案是给进程一种与父进行通信的方式,并且在任何一个孩子出现故障时父母都会打印错误。