我的写入失败,并且返回值-1
。我只想在文件中附加一个字符。
我不确定什么地方失败了,什么地方失败了。
运行代码后,open的返回值为MessageChannel
,写为-1
。正在创建文件,但未将其写入。
3
答案 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