在我的Linux中调用了哪个版本的close(),来自posix lib或内核
which version of close() is called in my linux,from posix lib or kernel?
当我man -a close
时,第一页是POSIX手册页,然后我有一个close(2)
,(2表示系统api或内核功能)。这意味着至少有 2 个版本的 close()
.
例如,像这样的代码段:
int fd = open("xxx");
........
close(fd); -----here, which version is called,
is that one from the POSIX lib, or the raw system API?
PS:因此,我的linux系统包含用于大多数系统API调用的POSIX包装器,如何辨别我的代码是在调用POSIX lib还是原始系统API?
POSIX不是一个库,它是一个标准。手册页的 POSIX 版本告诉您 POSIX 标准规定该功能应该做什么(以及该页面基于哪个版本的 POSIX)。如果您只依赖于本页中描述的行为,则您的代码应该适用于所有实现 POSIX 标准的系统(只要它们实现足够当前的版本)。
手册页的 Linux 版本会告诉您该函数在您的系统上的实际作用。在绝大多数情况下,此处描述的行为将是 POSIX 页面中描述的行为的超集,即 Linux 行为将遵循 POSIX 标准,但它也可能定义 POSIX 未定义的情况,或者函数可能接受 POSIX 未强制要求的其他选项。
如果您依赖于 POSIX 未指定的任何行为,您的代码可能只能在 Linux 系统上工作。
"这意味着至少有 2 个版本的 close()。"
不。这意味着有 2 个版本的文档需要关闭。
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 2D数组来自文本输入,中间有空格
- 通过继承类使用来自不同命名空间的运算符
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- C++:来自外部文件的Trivia
- 如何处理来自核心指南检查器的关于gsl::at的静态分析警告
- 针对遗留库的链接:来自预制makefile的-lgfortranbegin
- 如何在C++中正确引用来自不同类的类的对象?
- Qt中来自不同功能的按钮引用
- C++包含来自 #include "DevEngine/Core.h" 的错误
- Eigen c++ 三角形来自
- 来自 DLL 的函数调用 [表观调用的括号前面的表达式必须具有(指向-)函数类型]
- 来自 Android 应用程序内部的 boost 类型的 boost::wrapexcept<boost::system::system_error> 的未捕获异常
- 中止信号来自 C++ 中的中止(3) (SIGABRT)
- 如何多次询问来自QML对话框的输入?
- 如何强制 Thrift 仅接受来自本地主机的连接
- 使 ld 忽略来自 /etc/ld.so.conf 的目录
- 在POSIX中,我可以保存信号以供调用条件等待的其他线程使用吗.(这些线程来自同一进程)
- 在我的Linux中调用了哪个版本的close(),来自posix lib或内核
- 在WinAPI、POSIX或API-OS等价物的其他扩展中,是否存在来自C++11的所有级别的内存屏障