是否有一种可靠的方法让子进程向其父进程发出就绪信号?

是否有一种可靠的方法让子进程向其父进程发出就绪信号?

我有一个(Java)进程正在启动一个单独的进程foofoo启动需要几秒钟,然后才真正运行。控制权一启动就返回到父进程foo,但不一定准备好。

另请注意,在调试模式下,foo将人类可读的输出写入和.stdoutstderr

我知道的选项:

  1. sleep父进程需要n几秒钟的时间,n理论上比foo以往需要的时间要长。
  2. stdout让父进程在子进程的或中寻找特殊的东西stderr,并阻塞直到看到它。
  3. 准备好后,触摸操作系统中的某种标记文件foo,并让父进程监视该文件。

我真的不喜欢这些选项中的任何一个(1.有竞争条件,2.涉及匹配魔术字符串,3.有多个foo进程冲突的风险)。以另一种方式(父进程到子进程)我可以发送信号进行通信,但我不知道子进程将其状态传递给父进程的更好方法。

答案1

孩子可以向父母发送信号。SIGUSR1SIGUSR2为这种而存在特别指定情况,这里可能是理想的。

您的应用程序可以使用 Java 等效项 轻松找到其父进程 id getppid(),或者作为替代方案,您可以让父进程$$在命令行上传递其自己的 PID () 作为 Java 代码可以获取的参数。

相关内容