2 回答

TA貢獻(xiàn)1799條經(jīng)驗 獲得超9個贊
好隱蔽的一個錯誤??! if ((fd=open(pathname, FLAGS, MODE)==-1)) 這句,括號的位置錯誤了
應(yīng)該是: if ( (fd=open(pathname, FLAGS, MODE))==-1)
原寫法,導(dǎo)致fd值為0,成了標(biāo)準(zhǔn)輸入(終端)了,所以,lseek就會一直報錯!

TA貢獻(xiàn)1946條經(jīng)驗 獲得超3個贊
1.功能
將數(shù)據(jù)寫入已打開的文件內(nèi)
2.相關(guān)函數(shù)
open,read,fcntl,close,lseek,sync,fsync,fwrite
3.表頭文件
#include<unistd.h>
4.定義函數(shù)
ssize_t write (int fd,const void * buf,size_t count);
5.函數(shù)說明
write()會把參數(shù)buf所指的內(nèi)存寫入count個字節(jié)到參數(shù)fd所指的文件內(nèi)。當(dāng)然,文件讀寫位置也會隨之移動。
6.返回值
如果順利write()會返回實際寫入的字節(jié)數(shù)。當(dāng)有錯誤發(fā)生時則返回-1,錯誤代碼存入errno中。
7.錯誤代碼
EINTR 此調(diào)用被信號所中斷。
EAGAIN 當(dāng)使用不可阻斷I/O 時(O_NONBLOCK),若無數(shù)據(jù)可讀取則返回此值。
EBADF 參數(shù)fd非有效的文件描述詞,或該文件已關(guān)閉。
添加回答
舉報