如何在C+中可移植地获取进程id+;? 在标准C++中,我们可以为当前执行线程获取ID:但是,在写作时,这种语言并没有一个过程的固有概念。不过,我仍然需要我的进程id 那么,什么是最方便的、标准友好的(虽然不是语言标准的)获取现代C++中运行进程ID的方法?

如何在C+中可移植地获取进程id+;? 在标准C++中,我们可以为当前执行线程获取ID:但是,在写作时,这种语言并没有一个过程的固有概念。不过,我仍然需要我的进程id 那么,什么是最方便的、标准友好的(虽然不是语言标准的)获取现代C++中运行进程ID的方法?,c++,pid,portability,C++,Pid,Portability,注: 我意识到有些机器没有进程,但它们也不一定有线程。。。因此,没有理由不存在对退化情况具有回退功能的跨平台函数 我需要一个实际的进程ID,至少是POSIX兼容操作系统和Windows的进程ID 那么,在(现代)C++ ++中,最方便的、标准友好的方法是如何获得运行进程ID的? 正如Igor的评论所说,没有标准的C++方式,所以最便携的、标准友好的方法是 您将找不到任何由标准定义的、可以在更广泛的平台上使用的其他内容。 提供了各种与操作系统相关的功能,并已移植到许多平台。请参阅以获取列表。库

注:

  • 我意识到有些机器没有进程,但它们也不一定有线程。。。因此,没有理由不存在对退化情况具有回退功能的跨平台函数
  • 我需要一个实际的进程ID,至少是POSIX兼容操作系统和Windows的进程ID
<>那么,在(现代)C++ ++中,最方便的、标准友好的方法是如何获得运行进程ID的? 正如Igor的评论所说,没有标准的C++方式,所以最便携的、标准友好的方法是

您将找不到任何由标准定义的、可以在更广泛的平台上使用的其他内容。

提供了各种与操作系统相关的功能,并已移植到许多平台。请参阅以获取列表。库的命名空间提供了一个实现


一般来说,由于OS的进程管理的这一方面超出了C++语言的范围,所以没有任何C++方法可以在每个平台上获得进程ID。获得它的任何方法都必须是特定于操作系统的。想象一下,你设法设法得到它-你会怎么处理它(在一个便携式的C++程序)?练习的最终目标是什么?标准友好型是指“今天
boost
,可能在将来某个时候”?你打算用它做什么?@Galik:一些进程间通信。一台机器很可能有线程,但没有进程(想想单任务控制器)。1。我没说标准。。。有关这一点的重点,请参见问题编辑,。2.
getpid()
在Windows上工作吗?我很确定那里有一些不同的巫术。我知道你问什么,你说“最便携,标准友好”。但这并不意味着“可移植到每个操作系统”,甚至“可移植到Windows”。POSIX具有广泛的可移植性,是一种标准配置。如果你的意思是“便携到Windows和POSIX,或者其他的东西”,那么你应该说。“EINPOKLUM·”是标准友好的和可移植的,你需要一个“防火墙”API在你的C++代码和OS作为API提供的任何东西。把你的C++代码写在你的边缘防火墙上。根据需要在每个平台上实施边缘防火墙。@Eljay:的确如此。我只是希望这样一堵墙(不需要火的比喻)已经普遍存在。@einpoklum•看起来有一些现成的边缘墙可用。但是如果它们都不适合你的目的,那么创造它们就不难了。是的,有点麻烦,但不难。ACE为大多数POSIX提供了一种C++外观吗?