为什么进程的PID用不透明的数据类型表示?
进程的 pid 定义为 pid_t 进程号; 而 pid_t 是一种不透明的数据类型。如果进程的 ID 号可以用 int 表示,为什么我们不应该将其声明为 int 系列,而不是向用户隐藏其数据类型呢?
The pid of a process is defined as
pid_t pid;
whereas, pid_t is an opaque data type. If the process's id number can be represented by an int, why should not we declare it as an int family rather then hiding its data type from its users?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这并不是真正的不透明类型,而是整数类型的别名。例如,在我的系统中,我在不同的头文件中找到以下内容:
因此,您是对的,
pid_t
只是一个int
。不过,我想说这样做有几个原因:long int
),您只需更改typedef
,重新编译,一切都会正常工作。事实上,我相信这对于不同的架构已经发生了。That's not really an opaque type, but an alias to an integer type. For example, in my system, I find the following in different header files:
Hence, you're right in that
pid_t
is just anint
. However, I'd say there are a couple of reasons to do this:long int
), you just need to change thetypedef
, recompile and everything should work fine. In fact, I believe this already happens for different architectures.