調用read函數從打開文件讀數據。
#include<unistd.h> ssize_t read( int filedes, void *buf, size_t nbytes);
從 filedes 中讀取數據到 buf 中,nbytes 是要求讀到的字節數。
返回值:若成功則返回實際讀到的字節數,若已到文件尾則返回0,若出錯則返回-1。
當從終端設備讀時,通常一次最多讀一行。
ssize_t 提供帶符號的返回值,size_t不帶符號。
調用write函數向打開的文件寫數據。
#include<unistd.h> ssize_t write (int filedes, const void *buf, size_t nbytes);
從 buf 中寫數據到 filedes 中,nbytes 是相求寫入的字節數。
返回值:返回值通常與參數 nbytes相同,否則表示出錯。
文件描述符 filedes是一個 int型數,通常用文件描述符0與進程的標准輸入相關聯,文件描述符1與進程的標准輸出相關聯,文件描述符2與進程的標准出錯輸出相關聯。在依從POSIX的應用程序中,幻數0,1,2應當替換成符號常量 STDIN_FILENO,STDOUT_FILENO 和 STDERR_FILENO。這些常量都定義在頭文件<unistd.h>中。
標准輸入/輸出常量 stdin 和 stdout 定義在頭文件 <stdio.h>中,分別表示標准輸入和標准輸出文件。是指針類型,struct _IO_FILE *
進程終止時,系統會關閉該進程的所有打開的文件描述符,所以程序不用關閉輸入和輸出文件。
當度量一個進程的執行時間時,unix系統使用三個進程時間值:
- 時鍾時間
- 用戶cpu時間
- 系統cpu時間
時鍾時間是進程運行的時間總量。
用戶cpu時間是執行用戶指令所用的時間。
系統cpu時間是為該進程執行內核程序所經歷的時間。用戶cpu時間和系統cpu時間之和常被稱為CPU時間。
大多數文件系統為改善其性能都采用某種預讀( read ahead)技術。當檢測到正進行順序讀取時,系統就試圖讀入比應用程序所要求的更多數據,並假想應用程序很快就會讀這些數據。
