四 系統呼叫示例

2022-02-27 14:45:00 字數 953 閱讀 4133

獲取輸出檔名

開啟輸入檔案

如果檔案不存在,出錯退出

建立輸出檔案

如果檔案存在,出錯退出

迴圈直到讀取結束

關閉輸出檔案

在螢幕顯示完成完成資訊

正常退出

這裡涉及到的系統呼叫是

#define sys_write 5

#define sys_read 6

#define sys_close 7

#define sys_open 10

在ucore中庫函式read()的功能是讀檔案

庫函式read()的引數和返回值

庫函式read()使用示例

kern/trap/trapentry.s : alltraps()--獲取中段所需要的相關資訊組成的資料結構

kern/trap/trap.c:trap()

tf->trapno == t_syscall: 系統呼叫對應中段向量.在trap()函式中轉到下面

kern/syscall/syscall.c:syscall()

tf->tf_regs.reg_eax == sys_read(系統呼叫標號==read)

kern/syscall/syscall.c:sys_read()(這些引數就會轉到相應的系統呼叫實現裡頭)

從(堆疊)tf->sp獲取(當初填進堆疊的)fd,buf,length(已經從使用者態轉到核心態,再做相應的函式實現即可)

kern/fs/sysfile.c:sysfile_read()

kern/trap/trapentry.s:trapret()

Linux系統呼叫及示例

學習linux系統呼叫時先明確乙個概念 一般情況下,應用程式通過應用程式設計介面api而不是直接通過系統呼叫來程式設計 應用程式設計介面api與系統呼叫的關係如下 應用程式程式設計介面實際上並不需要和核心提供的系統呼叫對應 1 乙個api可以實現成乙個系統呼叫 2 乙個api可以通過呼叫多個系統呼叫...

呼叫系統對話方塊示例

演示如何呼叫系統對話方塊 演示語言 delphi uses shlobj,activex 其中 browseinfo.ulflags 引數可選值和含義如下 bif browseforcomputer 只有當使用者 選擇 我的電腦 時 確定 按鈕才有效,計算機可以是網路的 bif browseforp...

實驗四 了解系統呼叫

水平有限,學的不深,不對之處,多多指教 本次實驗在實驗樓linux虛擬機器 環境進行。本次實驗中,我們以20號系統呼叫getpid為例來熟悉系統呼叫過程。該函式的功能為 返回當前程序標識。4通過編譯執行可以看到實驗結果,這裡得到的當前程序pid為7584。下面我們用c語言中嵌入彙編 的方式來對get...