系统调用的三层机制(上)

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\n");
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位的编译方式

posted on 2018-11-11 21:20  20189224史馨怡  阅读(256)  评论(0编辑  收藏  举报

导航