gpt4 book ai didi

c++ - 如何检查进程是否正在从 C++ 代码运行?

转载 作者:搜寻专家 更新时间:2023-10-31 02:00:57 24 4
gpt4 key购买 nike

我正在编写一个 C++ 应用程序,它将通过 boost::interprocess 与另一个进程通信,但是我需要先检查另一个进程是否真的在运行——因为另一个进程负责创建进程间共享内存.如何检查其他进程是否正在运行?

伙计们,我特别需要检查其他进程

最佳答案

managed_shared_memory ctor 将抛出 interprocess_exception 以防它无法打开给定的共享内存(假设您将 open_only 传递给 ctor)。您可以使用异常中的错误代码来测试共享内存是否可用。

所有检查进程是否正在运行的方法(通过查看进程树、测试魔法日志文件或其他)是否存在竞争条件,如果远程进程正在运行,但它还没有成功设置共享内存。

更新:如果您想检查操作系统是否正在执行一个进程,那么您需要遍历进程列表并考虑每个进程。 Here你可以找到一个如何做到这一点的例子。

一种更简单、更便携但不太精确的技术是使用锁定文件。进程 A 在启动时在某个位置创建一个神奇的“锁定文件”,并在它终止时将其删除。然后,进程 B 可以测试此文件是否存在,以确定进程 A 是否正在运行。一个空字节大小的文件就足够了,但该文件还可以包含对进程 B 有帮助的附加信息(例如进程 A 的 PID)。但是,在进程 A 的最开始有一个很短的时间窗口,此时不存在锁定文件 - 但进程仍在运行。

关于c++ - 如何检查进程是否正在从 C++ 代码运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1322307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com