《UNIX環境高階程式設計》第一章總結

2021-09-23 21:15:01 字數 1834 閱讀 9813

第一章 unix 技術知識

unix的口令檔案一般情況下是/etc/passwd檔案

口令檔案中的登入項一般有7個以冒號進行分割的字段組成:登入名,加密扣了,數字使用者id(224),數字組id(20),注釋字段,起始目錄(比如:/home/rollen),以及shell程式(/bin/ksh)。

unix目錄的起始目錄叫做root,他的名字是乙個字元/

stat和fstat函式返回乙個包含所有檔案屬性的資訊結構

不能出現在檔名中的字元有:斜線(/)和空操作符null

以斜線開頭的路徑名叫做絕對路徑,否則是相對路徑

每乙個程序都有乙個工作目錄的,也叫做當前工作目錄,程序呼叫chdir可以改變當前的工作目錄

登陸的時候,工作目錄設定為起始目錄,也就是(home/rollen)之類的目錄,這個目錄可以在/etc/passwd檔案中獲得。

檔案描述符是乙個小的非負整數,核心使用它來標識乙個特定程序正在訪問的檔案。當核心開啟乙個現存的檔案或者建立乙個新的檔案的時候,他就會返回乙個檔案描述符,當我們讀取,寫入檔案的時候就可以使用他。

每當我們執行乙個新的程式的時候,所有的shell都會開啟標準輸入,標準輸出,標準錯誤輸這三個檔案描述符,預設都是連線到終端。

函式open,read,write,lseek以及close都提供了不適用緩衝的i/o,這些函式都是用檔案描述符工作。

程式是存放在磁碟上的可執行檔案,使用6個exec函式中的乙個可以由核心將程式讀入儲存器,並將其執行。

每乙個unix程序都有乙個唯一的程序id,這個數字是乙個非負整數。

有3個函式主要用於程序控制,fork,exec(exec有6中變體),waitpid。

以_t結尾的資料型別被稱為原始資料型別,一般定義在檔案中、他們一般使用c typedef說明加以定義。

當unix函式出錯的時候,一般需要返回乙個負值,而且整數型變數errno通常設定為具有特定資訊的乙個值。但是也有例外,比如一些函式並不是返回負值,而是使用其他的約定,比如返回null等。

對於errno應該知道1)如果沒有出錯,那麼他的值不會被乙個例程清除。因此只需要在函式返回值出錯的時候,才需要檢查他的值。2)任何乙個函式都不會把errno的值設定為0,在檔案中定義的所有常數都不為0.

口令檔案登入項中的user id是乙個數值,他用來想系統標識不同的使用者,系統管理員在確定乙個使用者的登入名的同時,也需要確定他的user id。使用者不能更改自己的user id,每個使用者都有乙個user id。

user id為0的使用者是超級使用者root。在口令檔案中通常有乙個登入項的登入名為root。

組id也是乙個數值,他是由系統管理員在確定使用者的登入名的時候分配的。一般在unix下,組被用來將不同的使用者整合到乙個部門下面,這種機制可以容許組中的不同成員之間可以共享一些資源,組檔案(通常是/etc/group)將組名對映為數字組id.

系統中每個檔案的目錄項都包含這個檔案的所有者的user id和group id。在目錄項中存放這2個值只需要4個位元組(假設以雙位元組整形存放),但是如果使用8位元組的登入名和8位元組的組名的話,需要占用更多的儲存空間,但是對於使用者來說,使用名字作為登入名比使用數字要方便的許多,所以在口令檔案中包含了登入名和使用者id之間的對映關係。而組檔案則包含了組名和組id之間的對映關係。

訊號是通知程序已經發生某種條件的技術,程序如何處理訊號有3中形式:

1)忽略訊號2)按照系統預設方式進行處理3)提供乙個訊號發生的時候呼叫的函式

很多條件都會產生訊號,有2中鍵盤方式:中斷鍵(一般是delete或者ctrl+c)和退出鍵(通常是ctrl+\),他們被用於中斷當前的程序。另外一種產生訊號的方式是使用kill函式,當向乙個程序傳送訊號的時候,我們必須是這個程序的所有者。

unix系統一直使用兩種不同的時間值,1)日曆時間2)程序時間。

Unix環境高階程式設計第一章摘記

概述簡介全書的描述物件 unix下的系統呼叫介面和標準c庫提供的許多函式。相當於unix程式設計師手冊的第二和第三部分。系統呼叫介面 作業系統給執行的程式提供的服務。unix標準 ansi c,ieee posix,x open portability guide xpg 全書組織 關於教程中的範例...

UNIX環境高階程式設計習題 第一章

1.1在系統上驗證,除了根目錄外,目錄.和.是不同的 2.分析圖1 6程式的輸出,說明程序id為852和853的程序發生了什麼情況 include apue.h int main void a.out hello world from process id 851 a.out hello world...

UNIX環境高階程式設計 3 第一章

所有作業系統都為他們所執行的程式提供服務。典型的服務包括 執行新程式 開啟檔案 讀檔案 分配儲存區以及獲取當前時間等。層級從裡向外擴充套件應用。1.核心 可將作業系統定義為一種軟體,即稱為核心,它控制計算機硬體資源,提供程式執行環境。2.系統呼叫 核心提供的介面。可被應用程式呼叫。3.shell 是...