2018-2019-120189224 《庖丁解牛Iinux内核分析》第四周学习总结
系统调用
含参数的系统调用实验
1.使用库函数API触发rename系统调用
#include<stdio.c>
int main()
{
int ret;
char *oldname="hello.c";
char *newname="newhello.c";
ret = rename(oldname,newname);
if(ret == 0)
printf("Renamed successfully
");
else
printf("Unable to rename the file");
return 0;
}
2.写嵌入式汇编代码触发rename系统调用,把系统调用号38(0x26)存入EAX寄存器,oldname存入EBX,newname存入ECX,执行int来使系统陷入内核态
3.查看文件列表
4.编译执行后hello.c成功改成newhello.c
5.rename_asm.c文件中的“a”换为“m”
代码调试中的问题和解决过程
- 问题:rename_asm.c编译报错
- 解决方案:采用32位的编译方式