一个给它系统调用号和return它的名字的函数

a function that gives it system call number and return its name

在 c 或 c++ 中是否有我们将系统调用号作为参数并 returns 我们系统调用名称的函数?例如我们给它 60 然后它 returns 退出。对于 linux x86_64 系统

我不知道有任何标准库函数。这是很少有应用程序需要的功能。但是你可以从已经写过的人那里借 table,例如this table 来自 strace(1),当然假设您将遵守其版权许可。

您还可以从系统的 glibc 头文件创建一个查找 table,就像这样的 perl 单行代码:

perl -nE '
  BEGIN { say "const char *syscallnames[] = {" }
  if (/__NR_(\w+) (\d+)/) { say qq/\t[] = "",/ }
  END { say "};" }' /usr/include/x86_64-linux-gnu/asm/unistd_64.h > syscallnames.h

asm/unistd_64.h 的确切位置可能因您的发行版和 glibc 版本而异。这是在 Ubuntu.

并将其与类似的东西一起使用:

#include <stdio.h>

const char * scnum_to_name(int num) {
#include "syscallnames.h"
  return syscallnames[num];
}
  
int main(void) {
  int num = 60;
  printf("%d = %s\n", num, scnum_to_name(num));
  return 0;
}