LINUX系统调用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LINUX系统调用相关的知识,希望对你有一定的参考价值。

参考技术A 系统调用是用户程序和linux内核交互的接口,linux的系统调用有下面三种方式:

在x86与x86_64的系统中,都可以使用int $0x80指令来执行系统调用,参数使用如下:

x86_64引入了一个新指令syscall来执行系统调用,参数使用如下:

正常调用库函数( man 3 execve ),传参方式见 x86 调用约定

查看调用号:头文件 /usr/include/asm/unistd.h 内容如下,所以32位和64位的调用号可以分别在unistd_32.h和unistd_64.h中找到

查看参数: man 2 execve

以 execve 为例, man 2 execve 查看其接口如下: int execve(const char *pathname, char *const argv[], char *const envp[]);

下面汇编实现了 execve("/bin/sh", 0, 0) :

32位:

64位:

以上是关于LINUX系统调用的主要内容,如果未能解决你的问题,请参考以下文章

在Linux操作系统中如何截获系统调用

Linux 系统调用

LINUX系统调用

1.linux系统调用和库函数调用的区别

[Linux]系统调用理解

如何在Linux内核里增加一个系统调用?