[英]How to obtain the process id portably in C++?
在标准 C++ 中,我们可以获得当前执行线程的 id: std::this_thread::get_id()
。 但是在撰写本文时,该语言并没有固有的过程概念。 不过,我仍然想要我的进程 ID。
那么 - 在现代 C++ 中获取正在运行的进程 ID 的最便携、标准友好(尽管不是语言标准)的方法是什么?
笔记:
那么,在(现代)C++ 中获取正在运行的进程的 ID 的最便携、最符合标准的方法是什么?
正如 Igor 的评论所说,没有标准的 C++ 方式,所以最便携、对标准友好的方式是getpid
。
您找不到任何其他标准定义的可用于更广泛平台的内容。
Boost.Interprocess有boost::interprocess::ipcdetail::get_current_process_id 。
ACE 库提供了各种与操作系统相关的功能,并已移植到许多平台。 请参阅此处获取列表。 该库的ACE_OS命名空间提供了getpid实现。
通常,没有通用的方法可以在每个平台上获取进程 ID,因为操作系统进程管理的这一方面超出了 C++ 语言的范围。
getpid()
函数应该可移植到Windows和Linux(已通过vs2017测试)
在这里查看帮助:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpid.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.