UNIX 上的一些系统调用列表在哪里?
这不是我最初的问题,但无论如何谢谢:)
man 2 syscalls
除此之外,您可以查看/usr/include/sys/syscall.h(在我的系统上仅#includes /usr/include/bits/syscall.h)。这是在 libc 构建时从内核系统调用列表生成的。
您还可以 grep SYSCALL_DEFINE 的 Linux 内核源代码。(我不是 BSD 专家,但我认为 FreeBSD 中的等价物是 SYSCALL_MODULE)
阅读精美手册。对于系统调用,从
man 2 intro
这就是我开始使用 UNIX 的方式。那时我们没有花哨的互联网......
对于官方、权威的 IEEE Std。1003.1 / 单一 UNIX 规范 (UNIX 2004) 联机帮助页,请参见:
完整的功能列表(系统接口)可以在“系统接口”或链接中找到。我还想借此机会插入我的开发/编码搜索自定义搜索引擎,其中包括并严重偏向单一 UNIX 规范/IEEE 标准。1003.1。例如,对fopen、close、unix等进行标准搜索时,会进行升级,以确保权威文档的结果位于最顶端。在查询前添加“man”会大大增加结果的权重,有利于 IEEE 标准。1003.1 手册页,如man find、man free、man inttypes.h等,尽管大多数查询应该支持 IEEE Std。1003.1 即使没有添加“man”(如果不是,请键入错误查询并告诉我)。
究竟是什么操作系统?手册第 2 节记录了系统调用,但是完整的集合取决于您使用的 UNIX 风格。
POSIX.1 定义了一套标准的操作系统接口,但是没有操作系统将自己限制在这些接口上。一般来说,您有 BSD 和 SYSV 风格,它们的语义略有不同。然而,现在所谓的系统调用实际上是准库函数。
唯一正确的答案需要特定的安装和文件检查
/usr/include/syscall.h
在 FreeBSD 中,查找系统调用的最佳位置是在文件 /usr/src/sys/sys/syscall.h 中。这是在 FreeBSD 9.0 上
你真正应该做的是拿起 W. Richard Stevens 的“Unix 环境中的高级编程”。这是一本关于如何编写类 Unix 操作系统的经典书籍。这本书很旧,MacOs/iPhoneOs 是不同的最传统的 Unix 风格,但是这本书是学习基础知识和了解 API 应该如何使用的好方法。在亚马逊上查看
在大多数环境中,ls /usr/man/2/
都会成功,尽管它可能是/usr/local/man
or/usr/share/man
甚至/usr/local/share/man
.
编辑:甚至可能有一个MANPATH
环境变量将您指向正确的位置。