Where can I obtain a list of UNIX system calls?

心不动则不痛 提交于 2019-11-29 08:59:31

问题


Where are some lists of system calls on UNIX?

This wasn't my original question, but thanks anyway :)


回答1:


man 2 syscalls

Aside from that, you can look in /usr/include/sys/syscall.h (which on my system merely #includes /usr/include/bits/syscall.h). That's generated at libc build time from kernel syscall list.

You can also grep the Linux kernel source for SYSCALL_DEFINE. (I'm not a BSD expert, but I think the equivalent in FreeBSD is SYSCALL_MODULE)




回答2:


Read The Fine Manual. For system calls, start with

man 2 intro

That's how I got started in UNIX. We didn't have no fancy internet back then ...




回答3:


For the official, authoritative IEEE Std. 1003.1 / Single UNIX Specification (UNIX 2004) manpages, see:

  • Single UNIX Specification (Open Group Base Specification Issue 6) / IEEE Std. 1003.1 ("POSIX")

A full list of functions (system interfaces) may be found under "System Interfaces" or at the link. I would also like to use this as an opportunity to plug my Development / Coding Search custom search engine, which includes and is heavily biased towards the Single UNIX Specification / IEEE Std. 1003.1. For example, a standard search for fopen, close, unix, etc. have promotions taken out to ensure that results from the authoritative documentation are at the very top. Adding "man" in front of a query heavily weights the result in favor of the IEEE Std. 1003.1 man page as in man find, man free, man inttypes.h, etc., although most queries should favor IEEE Std. 1003.1 even without adding "man" (if it isn't, type bad query and tell me).




回答4:


What operating system, exactly? Man section 2 documents the syscalls, however the complete set varies depending upon what flavor of UNIX you are on.

POSIX.1 defines a standard set of operating system interfaces, however no operating system limits itself to just those. In general you have the BSD and SYSV flavors which have slightly different semantics. However, nowdays the supposed syscalls are actually quasi library functions.

The only TRUE answer requires a specific installation and examination of the file

 /usr/include/syscall.h



回答5:


In FreeBSD, the best place to look for what the system calls are is in the file /usr/src/sys/sys/syscall.h. This is on FreeBSD 9.0




回答6:


What you should really do is pick up a copy of "Advanced Programming in the Unix Environment" by W. Richard Stevens. This is the classic book on how to program Unix-like OS's. The book is old and MacOs/iPhoneOs are a different most traditional flavors of Unix, but the book is a great way to learn the basics and get a feel for how the API's are supposed to be used. Check it out at Amazon




回答7:


http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html

http://www.metasploit.com/users/opcode/syscalls.html




回答8:


In most environments, ls /usr/man/2/ will do the trick, although it could be /usr/local/man or /usr/share/man or even /usr/local/share/man.

EDIT: There might even be a MANPATH environment variable pointing you to the right place.



来源:https://stackoverflow.com/questions/2672470/where-can-i-obtain-a-list-of-unix-system-calls

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!