unix環境高階程式設計 輸入和輸出

2021-07-16 08:29:00 字數 1235 閱讀 6175

檔案描述符:這通常是乙個小的非負整數,核心用以標識乙個特定程序正在訪問的檔案,當核心開啟乙個現有檔案或建立乙個新檔案時,都返回乙個檔案描述符,在讀寫這個檔案時,可以使用這個檔案描述符

標準輸入、標準輸出和標準錯誤

每當執行乙個新程式時,所有的shell都為其開啟三個檔案描述符。如果不做特殊處理,則這三個描述符都連線向終端。大多數shell都提供乙個方法,使其中任何乙個或所有三個描述符都能重新定向到某乙個檔案,比如ls>file.list

不帶緩衝的io:函式open、read、write、lsseek以及close提供了不帶緩衝的io,這些函式都使用檔案描述符。

以下例子,從標準輸入複製到標準輸出

#include "apue.h"

#define buffsize 4096

int main()

標頭檔案(apue.h包含了此標頭檔案)和兩個常量stdin_fileno和stdout_fileno是posix標準的一部分

兩個常量定義在標頭檔案中,他們指定了標準輸入和標準輸出的檔案描述符。在posix標準中,值分別是0和1.

程式編譯好,並這樣執行:./a.out > data 那麼標準輸入是終端,輸出則重新定向至檔案data,如果檔案不存在則會自動建立,鍵入ctrl+d終止本次複製。

若以下列方式執行該程式:./a.out < infile > outfile 會將名為infile檔案的內容複製到名為outfile檔案中

標準io

標準io函式為那些不帶緩衝的io函式提供了乙個帶緩衝的藉口,使用標準io函式無需擔心如何選擇最佳緩衝區的大小,使用標準io函式還簡化了對輸入行的處理,比如標準io函式fgets讀取乙個完整的行,而read讀取指定位元組數。

而最熟悉的標準io函式就是printf,在呼叫printf的程式中,總是包含stdio.h檔案,該標頭檔案包含了所有標準io函式的原型。

以下程式是使用標準io函式,功能類似前者,將標準輸入複製到標準輸出

#include "apue.h"

#define buffsize 4096

int main()

函式getc一次讀取乙個字元,函式putc將此字元寫到標準輸出。讀到輸入的最後乙個位元組時,getc返回常量eof(該常量在stdio.h中定義)。標準io常量stdin和stdout也在標頭檔案中定義,分別表示標準輸入和標準輸出。

unix環境高階程式設計

unix 日曆時間 自1970 年1 月1 日00 00 00 以來的國際標準時間 utc 程序時間 cpu 時間 時鐘時間 程序執行時間的總量。使用者cpu 時間 執行使用者指令時間量。系統cpu 時間 執行核心所經歷時間。命令 time 第三章至第七章 原子操作 任何乙個要求多於1 個函式呼叫的...

unix環境高階程式設計

檔案描述符file descriptor通常是乙個小的非負整數,核心用以標識乙個特定程序正在訪問的檔案。當核心開啟乙個現有檔案或建立乙個新檔案時,它都返回乙個檔案描述符。在讀寫檔案時,可以私用這個檔案描述符。按管理,每當執行乙個新程式時,所有的shell都為其開啟了3個標準檔案描述符 標準輸入,標準...

UNIX環境高階程式設計

本書是被譽為unix程式設計 聖經 的advanced programming in the unix environment一書的更新版。在本書第1版出版後的十幾年中,unix行業已經有了巨大的變化,特別是影響unix程式設計介面的有關標準變化很大。本書在保持了前一版風格的基礎上,根據最新的標準對...