首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从系统调用号中获取Linux系统调用名称?

如何从系统调用号中获取Linux系统调用名称?
EN

Stack Overflow用户
提问于 2014-04-23 23:48:47
回答 2查看 3.4K关注 0票数 7

我需要将Linux系统调用号转换为人类可读的名称。在内核2.6.32中,我从_天然橡胶*宏/usr/include/asm/unistd_32.h,这很麻烦,但它是有效的。现在我需要让它在内核3.2.0上工作,而这个文件已经不在那里了。

将Linux syscall编号映射为人类可读名称的最简单和最便携的方法是什么?例如:1->退出,6->关闭等。

EN

回答 2

Stack Overflow用户

发布于 2014-04-23 23:57:53

该文件定义了许多SYS_宏(间接通过bits/syscall.h在我的系统上)。例如:

代码语言:javascript
复制
#define SYS_eventfd __NR_eventfd
#define SYS_eventfd2 __NR_eventfd2
#define SYS_execve __NR_execve
#define SYS_exit __NR_exit
#define SYS_exit_group __NR_exit_group
#define SYS_faccessat __NR_faccessat

这就是你要找的吗?我不确定这是否是你问题的一部分,但是你可以这样做:

代码语言:javascript
复制
switch(code) {
#define syscode_case(x) case x: return #x;
    syscode_case(SYS_eventfd);
    syscode_case(SYS_eventf2);
}

您仍然需要知道可用的宏是什么,但不需要知道实际值。

编辑:

我的资料来源是man 2 syscall,其中规定:

代码语言:javascript
复制
#include `   /* For SYS_xxx definitions
票数 3
EN

Stack Overflow用户

发布于 2014-04-24 00:13:06

  1. 你可以做一个grep -rA3 'SYSCALL_DEFINE.\?(,' *在您的内核源代码目录中(替换为您实际的syscall)。
  2. 你可以man syscalls从那里开始寻找。
  3. 检查这里并保持耐心(评论中报告链接断开)
  4. 这个看起来很管用
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23249373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档