首页 > 其他 > 详细

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

时间:2018-11-11 22:45:14      阅读:152      评论:0      收藏:0      [点我收藏+]

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位的编译方式

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

原文:https://www.cnblogs.com/20189224sxy/p/9943322.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!