1.UNIX系統模型
內核是操作系統的核心,所以操作系統也被稱為內核。Shell本意為“殼”,是操作系統最外面的一層。
2.通過以下三個問題來理解系統編程:
(1)它能做什麼?(分析程序)
(2)它是如何實現的?(學習系統調用)
(3)能不能自己編寫一個?(編程實現)
例如:who命令的編寫
1)首先了解who的作用:顯示當前系統中已登錄的用戶信息;
2)Who命令如何工作:
查看who的聯機幫助:(所輸入的命令及得到的結果因Linux版本而異,本實驗環境為Ubuntu14.04)
man who
由此得知,已登錄用戶的信息存放在/var/run/utmp,繼續查看聯機幫助:
man -k utmp
man 5 utmp
即已經得到我們想要的結果,接下來的工作就是打開utmp,然後讀取所需字段(具體實現如下)。由於關乎文件的操作,所以需要用到的系統調用及函數大致有:open,read,lseek,close,creat,write。
3)編寫一個能實現who命令的函數。
總結:
1.對於cp命令,以及第三章中ls命令等的編寫,都遵循上述三個問題來實現,通過對這三個問題的解答,來學習目錄和文件的類型與屬性。
2.對目錄的操作:opendir,readdir,closedir
3.stat系統調用
功能:得到文件信息
stat把有path所指的文件的信息複製到buf所致的結構中。例如:
這是一個實現find命令的部分函數,它將指定大小的文件的文件名輸出到屏幕,即需用到文件大小,就必須使用stat來獲取文件的信息,然後判斷該文件的大小是否符合要求。
stat獲取的文件信息包括:
即我們可以輸出我們想輸出的文件的任意信息。
閱讀更多 有理想的代碼dog 的文章