C:Exec / fork>停止进程
发布时间:2020-12-16 07:53:55 所属栏目:百科 来源:网络整理
导读:我想使用fork创建很多子进程.执行程序.许多进程结束非常快(不到两分钟,甚至更早). 我的第一个问题是,我将产卵过程放在后台 ./spawnbot logging.txt[CTRL+Z]bg 1disown 到现在为止还挺好.现在我看不到任何一个spawnbot的消息,他们直接进入logging.txt.然而,每
我想使用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()将它们设置为你想要的值.现在没有时间提供一个例子,但是希望这能推动你正确的方向.. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |