系統程式設計手冊學習筆記

2021-10-04 12:19:00 字數 1038 閱讀 5232

1. 庫函式

設計庫函式是為了提供比底層系統呼叫更為方便的呼叫介面;

呼叫庫函式,有的不會執行任何系統呼叫(比如字串操作函式),有的則是構建於系統呼叫層之上的(比如fopen()是利用系統呼叫open()來執行開啟檔案的實際操作);

c語言的函式庫有多個版本,gnu c是其中乙個版本,簡稱glibc,是linux上最常用的實現;

只要執行了系統呼叫或者庫函式,檢查呼叫的狀態用於確認呼叫是否成功,這是一條程式設計鐵律,如果你認定系統呼叫或者庫函式呼叫"肯定不會失敗",那麼出了問題,你將在除錯程式上浪費大把的時間;(只有少數幾個系統函式在呼叫時一定不會失敗,比如,getpid,_exit)

庫函式的出錯:1)有些庫函式的出錯處理機制和系統呼叫函式相同,成功執行返回0,出錯返回-1,並置error(比如remove()函式,remove(const char* pathname),用於unlink()或rmdir()); 2)有一些返回值不盡相同,比如fopen()出錯返回null,並置error; 3)還有一些返回值各不相同、也不會置error;

所有執行i/o操作的系統呼叫,都以檔案描述符(乙個非負整數,通常很小),來指代開啟的檔案,linux系統中一切皆檔案,包括管道(pipe)、socket、終端、裝置和普通檔案。

shell會開啟3個標準的檔案描述符:標準輸入(檔案描述符0,stdin_fileno)、標準輸出(檔案描述符1,stdout_fileno)和標準錯誤(檔案描述符3,stderr_fileno)

既能開啟乙個已存在的檔案、也能建立並開啟乙個不存在的檔案;

關於flags引數:

必選項:指定檔案的訪問模式:o_rdonly、o_wronly、o_rdwr,三者不能同時使用,只能指定其中的一種(且必須指定一種),三者分別對應數字0、1、2,所以o_rdwr != o_rdonly | o_wronly;

可選項:(列出了部分)

o_creat:如果要開啟的檔案不存在,則建立,指令了此引數,則必須指定"mode"引數;

o_trunc:如果檔案已經存在,並且為普通檔案,則linux下無論以讀、寫方式開啟檔案,都會清空檔案內容,將其長度置為0

系統程式設計 學習筆記 01

是指編譯好的二進位制檔案,在磁碟上,不占用系統資源 cpu 記憶體 開啟的檔案 裝置 鎖 是乙個抽象的概念,與作業系統原理聯絡緊密。程序是活躍的程式,占用系統資源。在記憶體中執行。同乙個程式也可以載入為不同的程序 彼此之間互不影響 環境變數,是指在作業系統中用來指定作業系統執行環境的一些引數。通常具...

linux系統程式設計學習筆記

關閉檔案 linux命令列引數解析 int creat const char filename,mode t mode mode指定新建檔案的訪問許可權 return 檔案描述符fd open const char pathname,o create,mode t mode 第二個引數flags為o...

讀書筆記之linux unix系統程式設計手冊 43

程序間通訊介紹 1.unix系統上各種通訊和同步工具,並根據功能將他們分成了三類 1 通訊 這些工具關注程序之間的資料交換 2 同步 這些程序關注程序和執行緒操作之間的同步 3 訊號 儘管訊號的主要作用並不在此,但在特定場景下可以將它作為一種同步技術 2.資料傳輸工具 為了通訊,乙個程序將資料寫入i...