write()函数原型:
ssize_t write(int fd, const void *buf, size_t count);
初学C(ubuntu-gcc),写了段简单的代码测试open和write函数,代码如下:
| void test_open()
{
int fd_test=open("/home/test/test.txt",O_APPEND);
ssize_t nresult=0;
const char *pstring="Test string!\n";
nresult=write(fd_test,pstring,strlen(pstring));
close(fd_test);
if(nresult<0
)
{
printf("%d\t%s\n",errno,strerror(errno));
return;
}
printf("%d bytes were written!\n",nresult);
}
|
运行结果提示9(EBADF),bad file descriptor
仔细查看man手册后,发现问题出在open函数(int open(const char *pathname, int flags);)的flags参数处,
将flags参数O_APPEND 改为
O_APPEND| O_WRONLY 或
O_APPEND| O_RDWR,即以可写模式打开文件test.txt,可成功写入文件。(open函数中flags参数中O_RDONLY\O_WRONLY\O_RDWR标志为必选,即必须指定权限模式)
阅读(3263) | 评论(0) | 转发(0) |