我知道如何“去模仿”一个过程(不要与qazxsw poi混淆)。有一些答案qazxsw poi和qazxsw poi和我正在使用我自己的perl包装,它工作正常。
但我现在想要得到的是父进程在等待Java进程,直到它说“OK”,即直到它真正成功启动(不仅是进程启动,而且一切都运行良好)。
我可以通过写一个文件,绑定到一个套接字或类似的东西来表明这一点,但它很难看。在Thread.setDaemon
列表中的八个项目中,我只需要以下三个略微简化的形式:
第一个和最后一个项目可以在流程开始之前完成,因此只有hereing流程仍然存在。自从here存在以来,谷歌搜索“Java fork”是没有希望的。在我弄脏之前,我想知道是否
我不关心Windows,因为它是Linux服务器。
我不知道这对Java有多好,但从系统调用的角度来看:
当父母和孩子都完全掌控时,您应该调用fork或ForkJoinPool
来创建自己的通信通道,并通过环境变量或命令行参数将其指定给子级。记得在每个进程中立即关闭一半(如果你有控制权,那么在fork和exec之间,或者通过CLOEXEC标志 - 这意味着子可执行文件永远不必知道父进程的结束)。
我不确定为什么你似乎对使用插座犹豫不决 - 也许你的印象是本地插座占用了端口(他们没有) - 尽管如果所有数据都朝着一个方向传播我宁愿管道只是为了清晰。
如果孩子可以创建自己的孩子,你应该尽快在继承的管道上设置JNA标志。
您必须发送积极信息表明成功;提前关闭管道必须被视为错误(尽管您可能也有明确的错误)。请注意,这意味着您不必跟踪退出值(如果“child”实际上是孙子,则非常有用)。
或者,也许你应该做一些别的工作:你的init系统,X11和DBUS?例如,如果孩子崩溃,你认为你应该怎么做?