信号量:为什么sembuf在sem.h中定义但是semun不是?

时间:2015-11-30 18:09:35

标签: kernel ipc semaphore

我在this tutorial之后一直在试验linux IPC,并提出了以下问题。

在示例代码semdemo.c中,semun由程序员明确定义,而sembuf是在我的计算机/usr/include/x86_64-linux-gnu/sys/sem.h上的头文件中预定义的。为什么我们也不将semun的定义移到头文件中?

1 个答案:

答案 0 :(得分:1)

如果这样做,这将破坏现有程序,因为语言C不允许双重定义类型。

缺少的类型定义是AT& T的遗产,无法更改。

请参阅semctl()的SunOS手册页:

http://schillix.sourceforge.net/man/man2/semctl.2.html

源自AT& T手册页。