C:Exec / fork>停止进程

前端之家收集整理的这篇文章主要介绍了C:Exec / fork>停止进程前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用fork>创建很多子进程.执行程序.许多进程结束非常快(不到两分钟,甚至更早).

我的第一个问题是,我将产卵过程放在后台

./spawnbot > logging.txt
[CTRL+Z]
bg 1
disown

到现在为止还挺好.现在我看不到任何一个spawnbot的消息,他们直接进入logging.txt.然而,每当一个新的孩子被创建,我再次看到所有关于该孩子的信息.我现在想要使用自己的管道启动每个孩子 – 有没有更好的方式没有孩子发布他们的输出消息遍布安慰?我应该把它重定向到/ dev / null还是用C中的一些标志呢?

其次,所有的孩子都不会真的被杀死.我在ps -ef中有很多进程.我该怎么办?我怎么d

解决方法

首先你的第二个问题!

你的孩子留在’僵尸’模式,因为内核认为你可能还想从它们获取一个返回值.

如果您无意从子进程获取返回值,则应将父进程中的SIGCHLD信号处理程序设置为SIG_IGN,以使内核自动收到您的子进程.

signal(SIGCHLD,SIG_IGN);

第一个问题取决于你的实现.

但一般来说,在你fork()之后,你应该使用close()来关闭0和1的旧文件描述符,然后使用dup2()将它们设置为你想要的值.现在没有时间提供一个例子,但是希望这能推动你正确的方向..

猜你在找的C&C++相关文章