写入文件失败

时间:2018-11-08 13:57:55

标签: c

我的写入失败,并且返回值-1。我只想在文件中附加一个字符。
我不确定什么地方失败了,什么地方失败了。

运行代码后,open的返回值为MessageChannel,写为-1。正在创建文件,但未将其写入。

3

2 个答案:

答案 0 :(得分:2)

您需要向O_WRONLY通话中添加O_RDWR(或open)。

#include<fcntl.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<stdio.h>
int main()
{
    int fd,j;
    fd = open("test.txt", O_WRONLY | O_CREAT | O_APPEND,0777);
    if(0>fd) perror(0);
    printf("%d\n",fd);
    j=write(fd,"A",1);
    printf("write return %d\n",j);
    if(0>j) perror(0);
    return 0;
}

答案 1 :(得分:0)

@PSkocik指出,您需要添加标志WRONLY。另外,检查错误,尤其是errno

#include <errno.h>
#include <string.h>

j = write(fd, "A", 1);
printf("write return %d\n", j);
printf("errno: %d %s\n", errno, strerror(errno));
write return -1
errno: 9 Bad file descriptor