【发布时间】:2015-11-30 18:09:34
【问题描述】:
我在this tutorial之后一直在尝试linux IPC,并提出了以下问题。
在示例代码semdemo.c中,semun是程序员明确定义的,而sembuf是在我的机器/usr/include/x86_64-linux-gnu/sys/sem.h的头文件中预定义的。为什么不把semun的定义也移到头文件中呢?
【问题讨论】:
我在this tutorial之后一直在尝试linux IPC,并提出了以下问题。
在示例代码semdemo.c中,semun是程序员明确定义的,而sembuf是在我的机器/usr/include/x86_64-linux-gnu/sys/sem.h的头文件中预定义的。为什么不把semun的定义也移到头文件中呢?
【问题讨论】:
如果这样做,这将破坏现有程序,因为 C 语言不允许双重定义类型。
缺少的类型定义是 AT&T 的遗产,无法更改。
请参阅 semctl() 的 SunOS 手册页:
http://schillix.sourceforge.net/man/man2/semctl.2.html
源自 AT&T 手册页。
【讨论】:
semun 是在 FreeBSD 8.0(第 568 页)中定义的。