1. 程式人生 > >系統呼叫的三層機制(上)

系統呼叫的三層機制(上)

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位的編譯方式