如何在C ++中检查进程或线程是否存活?

时间:2011-11-10 17:37:21

标签: c++ multithreading process cross-platform

给定进程或线程ID,如何编写C ++函数来检查它是否存活。我想在Windows和Linux上实现它。

3 个答案:

答案 0 :(得分:1)

如果要检查进程或线程,则必须首先决定。这两个语义非常不同。对于流程,请尝试非官方的Boost.Process。对于线程,Boost.Threads

答案 1 :(得分:1)

如果您不愿意为项目添加额外的库依赖项,则可以使用预处理器指令(例如:#ifdef _WIN32)来包装特定于系统的代码。

如果GetExitCode *函数成功并且进程或线程仍然存在,则返回STILL_ACTIVE

的Linux

  • kill - 发送空信号(0)以检查pid是否仍然有效。

答案 2 :(得分:0)

如果进程ID或线程ID存活,则告诉它是两个不同的问题。

线程ID更容易 - 它们是流程的一部分 - 因此流程应该知道它已经创建了它们并且可以检查它们是否是最新的。

进程ID是一个不同的问题 - 在上一个onw死亡后,可以使用相同的ID创建一个新进程。

如果您有一系列合作流程,那么这个问题的一个很好的解决方案就是。您可以命名它们并使用名称或共享内存。我推荐后者。