2

在我的 Ruby 应用程序中,我试图提出一种万无一失的跨平台方法,以确保父进程的子进程在父进程被杀死时被杀死(参见这个问题)。

我正在探索的一种可能性是产生一个单独的进程来监视父进程并在父进程死亡时杀死子进程的想法。我已经想出了一种有效的方法来让这个监控进程知道父进程何时死亡,但是现在我需要一种方法来监视子进程,这样如果子进程在父进程之前死亡,监控进程就可以退出。请注意,“子进程”是监视进程父进程的子进程,而不是监视进程本身。

所以我需要知道的是:给定某个进程的 PID,我如何以跨平台的方式检查该进程是否仍在运行(或者更好的是,在它死亡时得到通知)?(例如适用于 Linux 和 Windows。)

4

1 回答 1

1

最简单的方法是测试你的 ruby​​ 运行的是哪个操作系统,然后通过命令行在linuxwindows上使用简单的测试来检查你的程序是否正在运行。

最简单的方法往往不是最好的方法。然而,准备好面对一些奇怪的代码,例如,如何简单地杀死 windows 上的进程。这是你的电话。

我希望有人说我错了,并且有一种很好的方法来管理跨平台的 ruby​​ 进程。请做。

于 2013-08-20T20:57:03.457 回答