什么是在C ++中获取当前实例(例如pid)的唯一值的独立于平台的方式

时间:2011-10-11 18:28:46

标签: c++ platform-independent

我希望以平台独立的方式获得C ++中当前实例的唯一整数值​​的某种类型(无论是进程ID还是其他任何内容)(这意味着没有#if #else宏开关)。

基于时间的值不可靠,因为两个实例可以同时启动。

有没有办法实现这个目标?

编辑:它不一定是全球唯一的。它只需要在系统范围内独一无二。

4 个答案:

答案 0 :(得分:5)

看看Boost process。可能正是您正在寻找的。如果您不想包含库,可以查看功能的实现方式。

答案 1 :(得分:1)

这可能是一种矫枉过正,但请查看QUuid

答案 2 :(得分:1)

我认为,您需要Universally unique identifier

答案 3 :(得分:1)

长话短说,答案是否定的,并非没有使用特定于平台的功能。

[C ++ 03]

C ++语言本身并没有提供任何机制来执行此操作。事实上,C ++本身对进程或进程间通信一无所知。不使用特定于平台的功能 - 由您手动滚动,这意味着#ifdef,或者在某些跨平台的第三方库中,如Boost,这也意味着#ifdef s - 这不是完成。

...和...

[C ++ 11]

C ++语言有一个基本的线程概念,但它没有提供任何机制(我可以看到)来创建进程间通信机制,所以上面仍然适用。