【发布时间】:2014-07-11 00:05:37
【问题描述】:
我很清楚手册页由 s.t. 部分分隔。 man(2) 谈论系统调用,man(3) 谈论库函数。我也知道fopen(C 库函数)和open(系统调用)之间的区别。但是open(2) 和open(3) 有什么区别?
当我在open 的手册页中寻找O_DIRECT(用于直接I/O)时,我想到了。奇怪的是,我发现它在版本 open(2) 中是一个有效标志,但不是 open(3)。
这很有趣。我知道open(2) 是一个Linux 系统调用(也许我应该说*nix?)。而且 AFAIK,没有名为 open 的 C 库函数。那么open(3) 是什么?
我在网络上进行了一些搜索,但没有找到任何明确回答我的问题的内容。这是否来自 POSIX 标准?这是我能猜到的最后一件事。如果这是真的,有什么区别?是不是open(2) 仅在 Linux 中实现,而open(3) 在 Unix 和 Linux 中都实现(因为 POSIX)。对吗?
顺便说一句,如果有人知道O_DIRECT 被排除在open(3) 之外的原因,我将不胜感激。
谢谢。
【问题讨论】:
-
我的 Ubuntu 机器上没有
open(3)。您使用的是什么发行版? -
是的,我知道这一点。这就是为什么我要问它是什么。还是谢谢。