linux c write函数写入错误,返回 Bad file descriptor

  • Post author:
  • Post category:linux

示例代码:

#include<unistd.h>
#include<stdio.h>
#include<iostream>
#include<fcntl.h>
#include <linux/types.h>
using namespace std;

int main()
{
    char buff[100]  ={"1234567"};
    int fd = open("/home/xianwj/day2/test.txt",O_CREAT,S_IRWXU);
    cout<<fd<<endl;
    if(write(fd,buff,sizeof(buff)) < 0)
    {
        perror("error:");
    }
}

结果:

 返回错误的文件描述符,原因是因为在open文件的时候未使用O_RDWR(可读可写)对文件进行读写,所以后面写文件会报错。

修改后代码:

#include<unistd.h>
#include<stdio.h>
#include<iostream>
#include<fcntl.h>
#include <linux/types.h>
using namespace std;

int main()
{
    char buff[100]  ={"1234567"};
    int fd = open("/home/xianwj/day2/test.txt",O_CREAT|O_RDWR,S_IRWXU);
    cout<<fd<<endl;
    if(write(fd,buff,sizeof(buff)) < 0)
    {
        perror("error:");
    }
}


版权声明:本文为qq_41961154原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。