Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10671
  • 博文数量: 4
  • 博客积分: 140
  • 博客等级: 入伍新兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-08 10:47
文章分类
文章存档

2011年(1)

2009年(3)

我的朋友

分类: C/C++

2009-11-22 23:27:48

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) |
给主人留下些什么吧!~~