遇到的问题:
关于系统调用函数号的问题,想使用getpid库函数,不知如何查找系统调用号。
可以进入目录LinuxKernel/linux-3.18.6/arch/x86/syscalls/
查看syscall_32.tbl,可以看到系统调用号
getpid()系统调用号为20,转化为十六进制即0x14。
还可以直接搜索linux 系统调用号表
实验四:使用库函数 API 和 C 代码中嵌入汇编代码两种方式使用同一个系统调用
- 使用库函数API获取进程识别码
编写2808.c,只使用了getpid()库函数获取进程识别码,注意:实验楼虚拟机是64位,gcc编译时要加-m32才能输出32位机器码
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main(void)
{
int u_id;
u_id=getpid();
printf("u_id=%u\n",u_id);
return 0;
}
运行结果如下:
- C语言代码中嵌入汇编代码
进入目录LinuxKernel/linux-3.18.6/arch/x86/syscalls/
查看syscall_32.tbl,可以看到系统调用号
getpid()系统调用号为20,十六进制即0x14
编写2808_asm.c文件:
#inclu