是否有命令在bash中列出Linux上的所有系统调用名称和数字?

时间:2011-09-23 12:32:58

标签: linux bash system-calls

我知道syscall 1表示write

但有没有命令在bash中列出Linux上所有实现的系统调用名称和数字?

2 个答案:

答案 0 :(得分:5)

man页面指向标题文件sys/syscall.h。它具有所有已定义的常量,位于/usr/include/sys/syscall.h。 (这是我正在使用的OS X上的位置,但我认为对于大多数Linux发行版来说也是如此。)

答案 1 :(得分:0)

这是我刚写的一个oneliner。它至少在Linux上运行,并且在机器上需要C编译器,因为它使用/usr/bin/cpp和系统包含文件。

{ echo -e '#include <sys/syscall.h>\n#define X(c) #c c'; sed -n 's/#define \(SYS_[^ ]*\).*/X(\1)/p' $(echo -e '#include <sys/syscall.h>' | cpp | sed -n 's/# [0-9]* "\([^<"]*\)".*/\1/p') | sort -u; } | cpp -P | grep ' [0-9]*$'