gpt4 book ai didi

c++ - fdopen : Invalid arguement

转载 作者:行者123 更新时间:2023-11-27 22:58:12 26 4
gpt4 key购买 nike

我正在尝试使用 fopenfdopen 创建并打开一个文件来写入一些内容。下面是我写的代码:

    char Path[100];
int write_fd;

snprintf(Path,100,"%s/%s","/home/user","myfile.txt");
printf("opening file..\n");
write_fd = open(Path, O_WRONLY | O_CREAT | O_EXCL, 0777);

if(write_fd!=-1)
{
printf(" write_fd!=-1\n");

FILE *file_fp = fdopen(write_fd,"a+");

if (file_fp == NULL)
{
printf("Could not open file.File pointer error %s\n", std::strerror(errno));
close(write_fd);
return 0;
}
write(write_fd, "First\n", 7);
write(write_fd, "Second\n", 8);
write(write_fd, "Third\n", 7);
fclose(file_fp);
}

文件 fd write_fd 是用错误的权限创建的,它应该有读/写权限(?)。但是当 fdopen 调用模式为 a+ 的文件描述符时,它会抛出错误,提示无效参数。

a模式成功打开。

导致此错误的模式 aa+ 之间究竟有何不同?

最佳答案

a+ 模式表示附加读取

由于您最初以只写模式打开文件 (O_WRONLY | O_CREAT | O_EXCL),因此读取访问与初始描述符的模式不兼容。

因此,调用fdopen()正确地以 EINVAL 失败。

关于c++ - fdopen : Invalid arguement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30476983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com