深入理解linux作業系統知識

1.UNIX系統模型

深入理解linux操作系統知識

內核是操作系統的核心,所以操作系統也被稱為內核。Shell本意為“殼”,是操作系統最外面的一層。

2.通過以下三個問題來理解系統編程:

(1)它能做什麼?(分析程序)

(2)它是如何實現的?(學習系統調用)

(3)能不能自己編寫一個?(編程實現)

例如:who命令的編寫

1)首先了解who的作用:顯示當前系統中已登錄的用戶信息;

2)Who命令如何工作:

查看who的聯機幫助:(所輸入的命令及得到的結果因Linux版本而異,本實驗環境為Ubuntu14.04)

man who

深入理解linux操作系統知識

深入理解linux操作系統知識

深入理解linux操作系統知識

由此得知,已登錄用戶的信息存放在/var/run/utmp,繼續查看聯機幫助:

man -k utmp

man 5 utmp

深入理解linux操作系統知識

即已經得到我們想要的結果,接下來的工作就是打開utmp,然後讀取所需字段(具體實現如下)。由於關乎文件的操作,所以需要用到的系統調用及函數大致有:open,read,lseek,close,creat,write。

3)編寫一個能實現who命令的函數。

總結:

1.對於cp命令,以及第三章中ls命令等的編寫,都遵循上述三個問題來實現,通過對這三個問題的解答,來學習目錄和文件的類型與屬性。

2.對目錄的操作:opendir,readdir,closedir

3.stat系統調用

功能:得到文件信息

深入理解linux操作系統知識

stat把有path所指的文件的信息複製到buf所致的結構中。例如:

深入理解linux操作系統知識

這是一個實現find命令的部分函數,它將指定大小的文件的文件名輸出到屏幕,即需用到文件大小,就必須使用stat來獲取文件的信息,然後判斷該文件的大小是否符合要求。

stat獲取的文件信息包括:

深入理解linux操作系統知識

即我們可以輸出我們想輸出的文件的任意信息。


分享到:


相關文章: