在c++中获得当前实例(例如pid)唯一值的独立于平台的方法是什么?

What is a platform independent way of getting unique value of current instance (e.g. pid) in C++

本文关键字:独立 于平台 是什么 方法 平台 唯一 pid c++ 例如 实例      更新时间:2023-10-16

我想以平台独立的方式(这意味着没有#if #else宏开关)获得c++中当前实例的唯一整数值的某种类型(无论它是进程id还是任何东西)。

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

有办法做到这一点吗?

编辑:它不必是全局唯一的。它只需要在系统范围内是唯一的。

看一下Boost进程。也许正是你要找的。如果你不想包含这个库,你可以看看这个功能是如何实现的。

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

[C + + 03]

c++语言本身并没有提供任何机制来做到这一点。事实上,c++本身对进程和进程间通信一无所知。如果不使用特定于平台的功能——要么由您手工编写,这意味着#ifdef s,要么在一些跨平台的第三方库中,如Boost,这也意味着#ifdef s——这是无法完成的。

……

[C + + 11]

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

这可能有点过头了,但是看看QUuid

我认为,你需要通用唯一标识符