write(): 错误的文件描述符
write(): Bad file descriptor
我想学习POSIX中的基本IO函数,我写了下面的代码,但是它不起作用,当我尝试执行代码时返回"Bad file descriptor"错误:
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(void)
{
int nfd;
ssize_t ret;
mode_t mode = S_IRWXU | S_IRWXG;
nfd = openat(AT_FDCWD, "idx.txt", O_APPEND | O_SYNC | O_CREAT, mode);
if (-1 == nfd)
{
perror("openat()");
exit(EXIT_FAILURE);
}
ret = write(nfd, "HELLO", 5);
if (-1 == ret)
{
perror("write()");
exit(EXIT_FAILURE);
}
close(nfd);
return 0;
}
我想在 O_APPEND 模式下写入文件。但是:
$ touch idx.txt # it does not work even if the file does not exist already
$ ./a.out
write(): Bad file descriptor
你没有告诉系统你想写入文件,在标志中添加 O_WRONLY 或 O_RDWR 使其工作。
我想学习POSIX中的基本IO函数,我写了下面的代码,但是它不起作用,当我尝试执行代码时返回"Bad file descriptor"错误:
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(void)
{
int nfd;
ssize_t ret;
mode_t mode = S_IRWXU | S_IRWXG;
nfd = openat(AT_FDCWD, "idx.txt", O_APPEND | O_SYNC | O_CREAT, mode);
if (-1 == nfd)
{
perror("openat()");
exit(EXIT_FAILURE);
}
ret = write(nfd, "HELLO", 5);
if (-1 == ret)
{
perror("write()");
exit(EXIT_FAILURE);
}
close(nfd);
return 0;
}
我想在 O_APPEND 模式下写入文件。但是:
$ touch idx.txt # it does not work even if the file does not exist already
$ ./a.out
write(): Bad file descriptor
你没有告诉系统你想写入文件,在标志中添加 O_WRONLY 或 O_RDWR 使其工作。