繁体   English   中英

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

[英]How to check if a process or thread is alive or not given their IDs in C++?

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

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

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

视窗

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

Linux的

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM