C:Execfork>停止进程

C:Execfork>停止进程,第1张

概述我想使用fork>创建很多子进程.执行程序.许多进程结束非常快(不到两分钟,甚至更早). 我的第一个问题是,我将产卵过程放在后台 ./spawnbot > logging.txt[CTRL+Z]bg 1disown 到现在为止还挺好.现在我看不到任何一个spawnbot的消息,他们直接进入logging.txt.然而,每当一个新的孩子被创建,我再次看到所有关于该孩子的信息.我现在想要使用自己 我想使用fork>创建很多子进程.执行程序.许多进程结束非常快(不到两分钟,甚至更早).

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

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

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

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

解决方法 首先你的第二个问题!

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

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

signal(SIGCHLD,SIG_IGN);

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

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

总结

以上是内存溢出为你收集整理的C:Exec / fork>停止进程全部内容,希望文章能够帮你解决C:Exec / fork>停止进程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1233275.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存