Tim*_*Tim 3 unix linux posix system-calls
Unix/Linux系统是全部调用还是主要调用POSIX?
许多Linux/Unix编程书籍都说POSIX库函数可能是OS系统调用的包装,也可能不是.例如http://www.makelinux.net/books/lkd2/ch05lev1sec1和https://www.safaribooksonline.com/library/view/understanding-the-linux/0596005652/ch10s01.html
POSIX的一部分(称为Single UNIX Specification)定义了UNIX.因此我认为POSIX定义了Unix(和Linux)的系统调用.
那么Unix/Linux系统调用POSIX库函数的一部分吗?
谢谢.
Linux系统调用列在syscalls(2)中.大多数是POSIX,但有些是特定于Linux(例如signalfd(2)等...).POSIX是一个规范,并不"了解" 系统调用(在POSIX视图中,它是一个实现细节).
一些函数在POSIX中标准化,但在Linux库代码中实现,例如在mmap(2)上构建的dlopen(3)(参见POSIX dlopen ) ...
严格来说,你的说法因此我认为POSIX定义了Unix(和Linux)的系统调用有点不正确。这样的系统调用不是 POSIX 的一部分。该标准定义了一个编程接口,即需要按照规定实现的功能以使系统兼容,但它没有说明它们是否需要作为系统调用或其他方式实现。
虽然 POSIX 定义的一些函数毫无疑问总是作为标准库函数实现,如fopen或fprintf,但其他一些通常作为系统调用实现,但没有强制要求以及它们是否可能从一个版本更改为另一个版本。这真的由 Unix 实现设计者来决定。
在任何情况下,只有典型 Unix 或 Linux 内核作为系统调用提供的部分内容与 POSIX xsh C 语言接口匹配。
| 归档时间: |
|
| 查看次数: |
3777 次 |
| 最近记录: |