read/write函數


調用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系統使用三個進程時間值:

  1. 時鍾時間
  2. 用戶cpu時間
  3. 系統cpu時間

時鍾時間是進程運行的時間總量。

用戶cpu時間是執行用戶指令所用的時間。

系統cpu時間是為該進程執行內核程序所經歷的時間。用戶cpu時間和系統cpu時間之和常被稱為CPU時間。


 

 

大多數文件系統為改善其性能都采用某種預讀( read ahead)技術。當檢測到正進行順序讀取時,系統就試圖讀入比應用程序所要求的更多數據,並假想應用程序很快就會讀這些數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM