在 GNU/Linux 系统上,我只看到了正 PID,但是当发生内核恐慌时,我看到了有关 PID=0 的进程的信息。那是什么?
在 Minix 3 上我见过带有负 PID 的进程。Minix 是 POSIX 兼容系统,但POSIX 只允许正 PID。它是什么?
我应该在 C 中使用什么变量类型来保存进程 ID?
1) 这是寻呼机或交换器:哪个进程的 PID 为 0?
2)从未使用过Minix,但手册上说Minix中的负pid表示内核进程。因为这实际上是内核实现的一部分,所以我不能说这是否符合 POSIX =)
3)你应该使用pid_t
如果您的目标是最大程度的可移植性,您应该阅读 POSIX,它说:
首先,getpid()函数返回pid_t
。pid_t
定义在 types.h 中。
第二:
... blksize_t, pid_t, and ssize_t shall be signed integer types. ...
The implementation shall support one or more programming environments
in which the widths of ..., pid_t, ... are no greater than the width
of type long. The names of these programming environments can be
obtained using the confstr() function or the getconf utility.
Run Code Online (Sandbox Code Playgroud)
所以你可以节省pid_t
价值long
。另请注意,在 POSIX 中,pid_t
是一个整数。