【问题标题】:Cross-platform way to Check if a (non-child) Process is Running检查(非子)进程是否正在运行的跨平台方法
【发布时间】:2013-08-16 13:39:13
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby


    【解决方案1】:

    最简单的方法是test which operation system your ruby is running,然后通过命令行对linuxwindows进行简单的测试来检查你的程序是否正在运行。

    最简单的方法往往不是最好的方法。但是,请准备好面对一些奇怪的代码,例如,how to simple kill a process on windows。这是你的电话。

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

    【讨论】:

    • 嘿,我也是。我确实找到了一个名为 ChildProcess 的很棒的库,它可以满足我的一些需求,但它似乎只适用于它产生的进程;无法包装现有进程,然后在它们上调用 alive? 之类的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2016-06-19
    • 1970-01-01
    相关资源
    最近更新 更多