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

标签 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); 
      }
  }

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

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

计数为 5,命令 1 和命令 2 为“ls”

最佳答案

答案是为进程提供一种与父进程通信的方式,并且在任何子进程失败时让父进程打印错误。

关于c - 在 C 中重定向输出时杀死并没有真正杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47495560/

相关文章:

c - 套接字直接协议(protocol)错误 : "Address family not supported by protocol"

在 UNIX 中创建多个子进程

linux - 可以运行同一可执行文件的多个实例吗?

git - 在GitHub上管理本地,远程和上游存储库的正确做法是什么?

python - 可以将 Python 与英特尔 Atom Developer SDK (C/C++) 结合使用吗?

c - 调用 sendto() 时长度错误

iphone - 如何检索 iPhone 的区域设置

c - 如何创建一个基本的操作系统

c - 通过管道读写数据

c++ - 如何使用fork创建并行子进程