码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-11-11 23:31:40      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:报错   库函数   第四周   return   过程   执行   汇编   main   图片   

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

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

标签:报错   库函数   第四周   return   过程   执行   汇编   main   图片   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!