首页 > 解决方案 > C 系统调用的 Linux 64 汇编等效项是什么?

问题描述

(问题已编辑,感谢@fuz)

C 系统调用的 Linux 64 汇编等效项是什么?

我想编写与在 C 中调用 CLI 具有相同功能的程序集,例如system("ls -l").

我要重现的代码与以下 C 具有基本相同的功能:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   system("ls -l");

    exit(0);
}

标签: clinuxassemblyx86-64system-calls

解决方案


systemlibc 函数不是内核系统调用。这就是为什么它的手册页system(3)不是system(2).

它是在 fork(2) + execve(2) 和waitpid(2)系统调用之上实现的。事实上,这是system(3)手册页说的第一件事!去阅读它,就像您应该阅读 Linux 手册页以了解您想了解的任何实际系统调用或库函数一样。

在调用它的程序上使用strace,或者使用 GDB 单步执行它,或者阅读 glibc 源代码。


推荐阅读