我希望以平台独立的方式获得C ++中当前实例的唯一整数值的某种类型(无论是进程ID还是其他任何内容)(这意味着没有#if #else宏开关)。
基于时间的值不可靠,因为两个实例可以同时启动。
有没有办法实现这个目标?
编辑:它不一定是全球唯一的。它只需要在系统范围内独一无二。
答案 0 :(得分:5)
看看Boost process。可能正是您正在寻找的。如果您不想包含库,可以查看功能的实现方式。
答案 1 :(得分:1)
这可能是一种矫枉过正,但请查看QUuid
答案 2 :(得分:1)
答案 3 :(得分:1)
长话短说,答案是否定的,并非没有使用特定于平台的功能。
C ++语言本身并没有提供任何机制来执行此操作。事实上,C ++本身对进程或进程间通信一无所知。不使用特定于平台的功能 - 由您手动滚动,这意味着#ifdef
,或者在某些跨平台的第三方库中,如Boost,这也意味着#ifdef
s - 这不是完成。
...和...
C ++语言有一个基本的线程概念,但它没有提供任何机制(我可以看到)来创建进程间通信机制,所以上面仍然适用。