pread和pwrite函數(shù)是Linux提供的另外一種讀取和寫(xiě)入文件的操作。pread函數(shù)的操作可以看作是順序調(diào)用了lseek函數(shù)和read函數(shù),同樣pwrite函數(shù)也類似。
======================================================
函數(shù)原型:
函數(shù)參數(shù):
- fd:要操作的文件描述符
- buf:在pread函數(shù)中表示存儲(chǔ)讀出數(shù)據(jù)的內(nèi)存首地址,在pwrite函數(shù)中表示寫(xiě)入數(shù)據(jù)的內(nèi)存首地址
- count:在pread函數(shù)中表示希望讀出的字節(jié)數(shù),在pwrite函數(shù)中表示希望寫(xiě)入的字節(jié)數(shù)
- offset:表示從哪個(gè)位置開(kāi)始讀取或者寫(xiě)入數(shù)據(jù)。偏移量是從文件開(kāi)頭開(kāi)始計(jì)算
返回值:
- 調(diào)用成功時(shí)pread函數(shù)返回實(shí)際讀到的字節(jié)數(shù),遇到文件結(jié)尾則返回0;pwrite返回寫(xiě)入的字節(jié)數(shù)
- 調(diào)用失敗時(shí)pread函數(shù)返回 -1 ;pwrite函數(shù)返回 -1 .
=======================================================
pread函數(shù)相當(dāng)于先后調(diào)用了lseek和read函數(shù),但是還是有區(qū)別的,有以下兩點(diǎn)區(qū)別:
- pread函數(shù)是原子操作,而先后調(diào)用兩個(gè)函數(shù)不是原子操作
- pread函數(shù)是不會(huì)改變當(dāng)前文件偏移量的,而read和write函數(shù)會(huì)改變當(dāng)前文件偏移量
(pwrite函數(shù)類似)
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。