如果open文件给出O_APPEND标记,表示后续的写为追加写
如果给出 O_TRUNC 标记,表示一开始就将文件截断为0长度
如果没有给出上述标记,则写的结果就如你描述的那样
1.功能将数据写入已打开的文件内
2.相关函数
open,read,fcntl,close,lseek,sync,fsync,fwrite
3.表头文件
#include
4.定义函数
ssize_t
write
(int
fd,const
void
*
buf,size_t
count)
5.函数说明
write()会把参数buf所指的内存写入count个字节到参数fd所指的文件内。当然,文件读写位置也会随之移动。
6.返回值
如果顺利write()会返回实际写入的字节数。当有错误发生时则返回-1,错误代码存入errno中。
7.错误代码
eintr
此调用被信号所中断。
eagain
当使用不可阻断i/o
时(o_nonblock),若无数据可读取则返回此值。
ebadf
参数fd非有效的文件描述词,或该文件已关闭。
好隐蔽的一个错误!! if ((fd=open(pathname, FLAGS, MODE)==-1)) 这句,括号的位置错误了应该是: if ( (fd=open(pathname, FLAGS, MODE))==-1)
原写法,导致fd值为0,成了标准输入(终端)了,所以,lseek就会一直报错!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)