前言:位元組流套接字(tcp套接字)上的read和write函式所表現的行為不同於通常的檔案i/o。位元組流套接字呼叫read或write輸入或輸出的位元組數可能比請求的數量少,然而這並不是出錯的狀態。這是因為核心中用於套接字的緩衝區可能達到了極限。通常這種情況出現在一次讀多於4096個位元組或write在非阻塞情況下返回不足位元組數。為了不多次呼叫read或防止write返回不足位元組數,我們用下面的兩個函式來替代read和write。
#include
#include
#include
ssize_t safe_read(int fd,void *vptr,size_t n)
else
if(nread == 0) //eof
break;
nleft -= nread;
ptr += nread;
}return (n-nleft);
}
#include
#include
#include
ssize_t safe_write(int fd, const
void *vptr, size_t n)
nleft -= nwritten;
ptr += nwritten;
}return(n);
}
上面介紹了兩個安全讀寫函式,但是並不意味著這兩個函式在任何地方都完全適用,所以不要強迫自己使用。需要注意阻塞、效率等問題,當你只是讀寫少量位元組時,就沒必要使用了。 UNIX環境變數 讀寫函式變體
我們經常使用的讀寫函式是read 和write 但是每次讀寫只能讀入或者寫入到乙個緩衝區,今天介紹另一種讀寫函式,可以一次呼叫,讀寫多個非連續緩衝區。include ssize t readv int fd,const struct iovec iov,int iovcnt ssize t writ...
unix環境高階程式設計 讀寫鎖
1.需要注意的地方 2.讀寫鎖適合的情況 讀寫鎖非常適合對於資料結構讀的次數遠大於寫的情況。3.讀寫鎖相關介面 讀寫鎖又稱為共享互斥鎖,是一種特殊的自旋鎖。讀模式又稱共享模式,寫模式又稱互斥模式。include int pthread rwlock init pthread rwlock t res...
UNIX檔案安全與許可權
total 74434 表示該目錄中所有檔案所佔的空間 2 表示該檔案硬鏈結的數目 39921 表 示該檔案的長度,用位元組表示,不是k位元組 rwxrwxr x 代表該檔案或目錄 的讀寫執行許可權,第一位表示該檔案型別 7種 d 目錄 l 符號鏈結 指向另乙個檔案 s 套 接字檔案 b 塊裝置檔案...