c - 如何在没有 exec*() 的多进程应用程序中处理 fork() 错误

标签 c linux fork exit

我正在使用 fork() 函数在循环中创建进程。新进程不调用 exec*() 系列中的任何函数;他们只是运行他们的代码,然后使用 exit() 退出。他们不能失败。

但是如果 fork() 失败我不知道该怎么办,我已经创建了一些新进程。 我是否必须使用 return 或 exit()?我必须使用 killpg() 来终止创建的进程吗? 如果 fork() 失败,我想清理所有内容并从主进程中退出程序。 有人可以提示我如何执行此操作吗?

最佳答案

调用 killpg(getpgrp(), SIGKILL) 然后调用 exit(...)return ... 应该可以完成工作.

供引用:killpg() , getpgrp()

关于c - 如何在没有 exec*() 的多进程应用程序中处理 fork() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23410344/

相关文章:

在c中调用函数会导致struct中的字符串值变成垃圾值

c++ - 与Boost中的dup2类似的功能

c++ - 如何让两个子进程互相等待

c - 如何理解链表结构中的指针 'next'?

c - gdb:程序退出,代码为 030000000375

c - 结构的字段是否算作变量?数组的元素算作变量吗?

linux - 使用交叉编译器为 arm 编译 native GCC

linux - 为什么在 Linux 上的 SendEmail 中句首的句号会被忽略

linux - 是否可以在用户登录时在 Linux 中导出原始文本密码?

C 并发程序输出取决于输出到标准输出还是文件