如何根据unistd_64.h或unistd_32.h文件中的编号输出系统调用的名称?

时间:2014-07-24 02:50:12

标签: c linux-kernel system-calls unistd.h

例如unistd_64.h中有一些宏

...

#define __NR_semget 64

#define __NR_semop 65

#define __NR_semctl 66

#define __NR_shmdt 67

#define __NR_msgget 68

#define __NR_msgsnd 69

...

当我输入数字时

64

,它将输出

__ NR_semget或semget

c / cpp源代码好多了,谢谢!

2 个答案:

答案 0 :(得分:0)

您可以通过定义表示这些定义名称的字符串数组来实现此目的。不幸的是,没有捷径......

const char *name[] = {

    ...,

    /* this is now the 64th string... */
    "__NR_semget",
    "__NR_semop",

    ...
};

printf("name: %s\n", name[64]);

答案 1 :(得分:0)

Syscall名称和数字映射很大程度上取决于您使用的拱门。

ausyscall - 提供给定系统调用号的映射。也许你可以这样做:

system("ausyscall 64 x86_64")

这应返回 semget