Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查进程或线程是否处于活动状态,并在C+中给出它们的ID+;? 给定进程或线程ID,如何编写C++函数来检查它是否生存。我希望在Windows和Linux上都实现此功能。_C++_Multithreading_Process_Cross Platform - Fatal编程技术网

如何检查进程或线程是否处于活动状态,并在C+中给出它们的ID+;? 给定进程或线程ID,如何编写C++函数来检查它是否生存。我希望在Windows和Linux上都实现此功能。

如何检查进程或线程是否处于活动状态,并在C+中给出它们的ID+;? 给定进程或线程ID,如何编写C++函数来检查它是否生存。我希望在Windows和Linux上都实现此功能。,c++,multithreading,process,cross-platform,C++,Multithreading,Process,Cross Platform,您必须首先确定是检查进程还是线程。这两种语言有非常不同的语义。对于流程,请尝试非官方的。对于线程 如果您不愿意向项目中添加额外的库依赖项,可以使用预处理器指令(例如:\ifdef\u WIN32)包装特定于系统的代码 窗户 + + 如果GetExitCode*函数成功并且进程或线程仍然存在,则返回仍然处于活动状态 Linux -发送空信号(0)检查pid是否仍然有效 判断进程ID或线程ID是否处于活动状态是两个不同的问题 线程ID更容易——它们是进程的一部分——因此进程应该知道它已经创建了

您必须首先确定是检查进程还是线程。这两种语言有非常不同的语义。对于流程,请尝试非官方的。对于线程

如果您不愿意向项目中添加额外的库依赖项,可以使用预处理器指令(例如:
\ifdef\u WIN32
)包装特定于系统的代码

窗户
  • +
  • +
如果GetExitCode*函数成功并且进程或线程仍然存在,则返回
仍然处于活动状态

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

判断进程ID或线程ID是否处于活动状态是两个不同的问题

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

进程ID是一个不同的问题-在前一个onw使用相同ID终止后,可以创建一个新进程


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

您需要提供“活着”的确切定义(死亡?暂停?不存在?)@Joseph我的意思是进程被终止。请注意,这样做有点冒险。。。进程ID#x终止的可能性很小,然后该进程ID被操作系统重新使用并分发给另一个进程。由于这个原因,操作系统通常会尽量避免使用进程ID号,但最终这些编号会自动换行,并且您可能会认为“您的进程”正在运行,而实际上它是其他一些不相关的进程。我认为OP也希望查询来自其他进程的线程。