初學APUE book 1重點摘入

2021-08-15 18:31:21 字數 1644 閱讀 5717

作業系統定義為一種軟體,它控制計算機硬體資源,提供程序執行環境。通常叫這種軟體為核心。

核心的介面被稱為系統呼叫,公用庫函式建立在系統呼叫介面。shell是乙個特殊的應用程式,為執行其他引用程式提供了乙個介面。

1.檔案系統

unix檔案系統是目錄和檔案的一種層次結構,所有東西的起點稱為根(root)的目錄,這個目錄的名稱是乙個字元"/"。

目錄是乙個包含目錄項的檔案。在邏輯上,可以認為每個目錄項都包含乙個檔名,同時還包含說明該檔案屬性的資訊,檔案屬性是指檔案型別、檔案大小、檔案所有者、檔案許可權以及檔案最後的修改時間等。

2.檔名

目錄中的各個名字稱為檔名。只有斜線和空白符這兩個字元不能出現在檔名中。斜線是用來分割構成路徑名的各檔名,空白符是用來終止乙個路徑名。建立檔案最好注意一下命名的方式:字母、數字、句點、短橫線、和下劃線。

注:建立新目錄時會自動建立兩個檔名:.和..指向當前目錄,..指向父目錄。在最高層次的根目錄中..和.相同。

3.路徑名

有斜線分隔的乙個或多個檔名組成的序列構成路徑名,以斜線開頭的路徑名稱成為絕對路徑,否則稱為相對路徑名。相對路徑名相當於當前目錄的檔案。檔案系統根的名字是乙個特殊的絕對路徑名,它不包括檔名。

4.工作目錄

每個程序都有乙個工作目錄,有時稱其為當前工作目錄。所有相對路徑名都是從工作目錄開始解釋的。程序可以用chdir函式更改其工作目錄。

5.起始目錄

登陸時,工作目錄設定為起始目錄,該起始目錄從口令檔案開始中相應使用者的登陸項中取得。

當unix系統函式出錯時,通常會返回乙個負值,而且整形變數errno通常被設定為具有特定資訊的值。

例如:open函式如果成功執行則返回乙個非負檔案描述符,如出錯則返回-1。在出錯時,有大約15種不同的errno值。而有些函式對於出錯則使用另一種約定而不是返回值。

例如:大多數返回指向物件指標的函式,在出錯時返回乙個null指標。

檔案中定義了errno以及可以賦與它的各種常量。這些常量都以字元e開頭。在linux中可以使用man手冊來檢視errno的使用方法

歷史上,unix系統使用過兩種不同的時間值。

(1)日曆時間。該值是1970.1.1 00:00:00這個特定時間以來所經過的秒數累計值。這些時間值可用於記錄檔案最近一次的修改時間等。系統基本資料型別time_t用於儲存這種時間值。

(2)程序時間。也被稱為cpu時間,用以度量程序使用的**處理器資源。程序時間以時鐘滴答計算。系統基本資料型別clock_t儲存這種時間值。

所有作業系統都提供多種服務的入口點,由此程式向核心請求服務。各種版本的unix實現都提供了良好定義、數量有限、直接進入核心的入口點,這些入口點被稱為系統呼叫函式。

系統呼叫介面總是在《unix程式設計師手冊》的第2部分中說明,是用第2部分中說明,是用c語言定義的,與具體系統如何呼叫乙個系統呼叫的實現技術無關。

《unix程式設計師手冊》的第三部分定義了程式設計師可以使用的通用庫函式。雖然這些函式可能會呼叫乙個或多個核心的系統呼叫,但是他們並不是核心的入口點。

乙個可說明系統呼叫和庫函式之間的差別例子是,unix系統提供的判斷當前時間和日期的介面。

注:應用程式既可以呼叫系統呼叫也可以呼叫庫函式。

系統呼叫和庫函式之間的另外乙個差別是:系統呼叫通常提供一種最小介面,而庫函式通常提供複雜的功能。

爬蟲初學1

import urllib.request import re import chardet 開啟網頁,讀取網頁,網頁解碼 page urllib.request.urlopen 開啟網頁 htmlcode page.read 獲取網頁源 print chardet.detect htmlcode ...

gdb除錯初學 1

菜鳥在寫c程式的時候最害怕就是遇到segmentation fault core dumped 遇到段錯誤可以嘗試從gdb除錯來分析core檔案從而定位問題 然而,預設情況下是不生成core檔案的,至少在我的ubuntu上,可執行程式的路徑下就沒有生成core file。檢視ulimit a 得到如...

初學java小結1

1.scanner類的應用 1 使用scanner類時,要建立乙個物件 scanner input new scanner system.in 這裡指的是控制台輸入流。需要注意的是,scanner在不使用時要關閉,即 input.close ps 當 中需要多次使用scannner建立輸入流時,不要...