Process 当进程在Windows和Linux中终止时,如何获得通知?

Process 当进程在Windows和Linux中终止时,如何获得通知?,process,notifications,kill,Process,Notifications,Kill,我想写一个程序,当操作系统上的任何运行进程死亡时,操作系统都会通知它 我不想每次都对以前存在的进程进行轮询和比较。我希望每当进程终止时,操作系统都会提醒我的程序 我该怎么做呢?一些示例代码将非常有用 PS:在Java/C++中寻找方法。在Unix下,您可以使用sigchld信号获得进程死亡的通知。但是,这要求被监视的进程是监视进程的子进程 在Windows下,您可能需要有一个有效的进程句柄。如果您自己使用CreateProcess生成进程,则可以免费获得句柄,否则必须通过其他方式获取。然后可以通

我想写一个程序,当操作系统上的任何运行进程死亡时,操作系统都会通知它

我不想每次都对以前存在的进程进行轮询和比较。我希望每当进程终止时,操作系统都会提醒我的程序

我该怎么做呢?一些示例代码将非常有用


PS:在Java/C++中寻找方法。

在Unix下,您可以使用
sigchld
信号获得进程死亡的通知。但是,这要求被监视的进程是监视进程的子进程

在Windows下,您可能需要有一个有效的进程句柄。如果您自己使用
CreateProcess
生成进程,则可以免费获得句柄,否则必须通过其他方式获取。然后可以通过调用句柄上的
WaitForSingleObject
来等待进程终止

对不起,我没有这方面的示例代码。我甚至不确定,在Windows下等待进程句柄是否真的会等待进程的终止(与导致进程句柄进入“信号”状态或其他情况的其他“重要”情况相反)。

听起来像是您想要的()。请参阅本文以开始:


我没有准备好代码示例,但在Linux上,有一个想法可能是在第一次启动watcher程序(例如,使用
$pgrep
)然后使用观看
/proc/
)时,找出您希望观看的进程的ID,该进程会在进程死亡时被删除。与轮询不同的是,这不会占用任何重要的CPU资源


现在,procfs是,所以我不能保证这种方法确实有效,但它确实值得研究。

嗨,德克,这样看起来也可行。我试试看。谢谢,谢谢。看起来是Windows的最佳选择。