问题标签 [process-reaper]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 当父母被告知要杀死孩子(c)时,如何将其他参数挤入收割机函数?
我正在编写一个功能非常类似于聊天室的 TCP 服务器并遇到了这个问题。
当用户连接时,会创建一个子进程来为用户服务。
当用户登录时,我将他的用户名存储到一个文本文件中,online.txt
但是当用户注销时,我需要从(问题)中删除用户,然后是online.txt
父级并杀死孩子。signals
reaper()
我的问题是:
Q1:我如何向收割者提供额外的信息(例如用户用于登录的用户名),以便它也可以将用户从中删除online.txt
?或者还有其他更好的方法吗?
Q2:sig
inreaper()
的价值从何而来?我可以向收割者添加其他参数吗?
Q3:我可以使用孩子的 pid 作为 login.txt 的某种主键吗?如果是这样,我如何reaper()
在父母调用的过程中检索孩子的 pid?
收割者看起来像这样:
父级使用的信号如下所示:
提前谢谢你,我希望一次问3个问题不会太贪心。
对任何问题的任何见解都将不胜感激。
unix - process re-parenting: controlling who is the new parent
Is the new parent always "init" or is there some way to control who gets to be the new parent?
Wikipedia seems indicates that it's always "init". I really hope that this is not the case. I have tried everything I can think of with setpgid and setsid, but no luck. And now that I see this wikipedia article I need advice.
In a Unix-like operating system any orphaned process will be immediately adopted by the special init system process. This operation is called re-parenting and occurs automatically. Even though technically the process has the "init" process as its parent, it is still called an orphan process since the process that originally created it no longer exists. Taken from wikipedia
The reason I'm asking is because I'm making a Mac app that runs a number of worker processes. I want these worker processes to appear as children of the main process in the process-hierarchy of the task manager. Some of the workers run as different users and on Mac OS X I need to fork twice to pass privileges to the child process. Because I "double fork" the workers currently run as deamons, and when looking with task manager I see the workers are having "init" as their parent process.
c - 是否可以采用流程?
进程 Afork()
的进程 B。
过程 A 死亡,因此init
采用 B。
看门狗创建进程 C。
C 是否有可能从 中采用 B init
?
更新:
或者,如果 C 是在 A 死之前创建的,而不init
成为 B 的中间父级,甚至有可能让 C 直接采用 B(当 A 死时)?
更新 1:
此外,如果有任何意见说明为什么有可能采用我所描述的方式将是一件坏事或难以实施,我将不胜感激。
Update-2 - 用例(父母和孩子指的是流程):
我有一个应用程序使用父母来管理一大群孩子,这依赖于父母的管理设施。为了完成其工作,父母依赖于收到孩子终止的通知,这是通过接收相关SIGCHLD
信号来完成的。
如果父母本身因某种事故(包括段错误)而死亡,我需要重新启动整个“家庭”,因为现在不可能在孩子终止时触发某些事情(这也可能是由于段错误)。
在这种情况下,我需要关闭所有孩子并重新启动整个系统。
避免这种情况的一种可能方法是建立一个备用进程,它可以接管死去的父母的角色...... - 如果它可以再次接收到继子女的SIGCHLD
信号!
c - shell中的fork命令打印进程ID
我试图在运行命令pid
后打印进程。fork()
这是我的代码-
这是我得到的答案-
为什么第二行中的父母 id 不是。2420
为什么我会得到我1910
如何获得这个值?