关于linux write函数的一个问题“Bad file descriptor”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于linux write函数的一个问题“Bad file descriptor”相关的知识,希望对你有一定的参考价值。

程序如下:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
int main(int argc, char** argv)
int fd;
char* fName = "text.txt";
if((fd = open(fName, O_CREAT | O_APPEND)) < 0)
fprintf(stderr, "open file %s error !\n msg:%s\n", fName, strerror(errno));
exit(1);

char* content = "1111111111";
if(write(fd, content, 10) < 0)
fprintf(stderr, "write file %s error !\nmsg:%s\n", fName, strerror(errno));
exit(1);

exit(0);


运行的时候总是出现:
Bad file descriptor

的错误,请问怎么回事吗?

你的错误是:
write file text.txt error !
msg:Bad file descriptor
显然,是没写权限,改fd = open(fName, O_CREAT | O_APPEND)
为fd = open(fName, O_CREAT | O_APPEND | O_RDWR) 就好了
参考技术A 晕。。。你在 open 的时候,没设置读写啊。。应该为open(fName, O_WRONLY | O_CREAT | O_APPEND) ,不然你write不知道写到哪里去了..

以上是关于关于linux write函数的一个问题“Bad file descriptor”的主要内容,如果未能解决你的问题,请参考以下文章

Android java.io.IOException: write failed: EBADF (Bad file number)

IOException: write failed: EBADF (Bad file number)

linux socket write()函数阻塞卡住线程问题(线程无法结束)write()非阻塞代码

arm6410,linux,c语言,read函数返回-1,错误:bad address

linux write系统调用如何实现

麻烦问一下Linux下GPIO驱动的问题,ioctl函数和write函数有啥区别,