getpid() 最简单:POSIX 系统(Linux/macOS)直接提供,返回当前进程 PID(pid_t 类型),声明于 ,无需 fork() 等额外调用。
Linux/macOS 下用 getpid() 获取 PID 最简单
POSIX 系统(包括 Linux 和 macOS)直接提供 getpid(),它返回当前进程的 PID,类型是 pid_t,本质是带符号整数。无需额外头文件,在 中声明(C++ 中也可用 ,但严格来说 getpid() 属于 POSIX,不是 C 标准函数)。
常见错误是误以为要调用 fork() 或 waitpid()——完全不需要。只要进程已启动,getpid() 就能立刻返回有效值。
- 示例:
#include #include int main() { std::cout << "PID: " << getpid() << std::endl; return 0; } - 注意:在子进程中调用
getpid()返回的是子进程自己的 PID,不是父进程的 - 返回值为 0 是合法的(例如某些容器或 chroot 环境中),不能当作错误判断依据
Windows 下必须用 GetCurrentProcessId()
Windows 没有 getpid(),对应的是 Win32 API 函数 GetCurrentProcessId(),定义在 中,返回类型是 DWORD(即 unsigned long)。它和 getpid() 行为一致,但不可混用。
容易踩的坑是忘记链接依赖或头文件顺序问题:如果先包含其他 Windows 相关头文件(比如 ),再包含 ,可能引发宏冲突;建议单独、尽早包含 。
立即学习“C++免费学习笔记(深入)”;