无效参数
fdopen: Invalid arguement
我试图创建和打开一个文件与fopen
和fdopen
写一些内容。下面是我写的代码:
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!=-1n");
FILE *file_fp = fdopen(write_fd,"a+");
if (file_fp == NULL)
{
printf("Could not open file.File pointer error %sn", std::strerror(errno));
close(write_fd);
return 0;
}
write(write_fd, "Firstn", 7);
write(write_fd, "Secondn", 8);
write(write_fd, "Thirdn", 7);
fclose(file_fp);
}
文件fd write_fd
创建的权限为"错误",应该有读写权限。但是当fdopen
调用模式为a+
的文件描述符时,它抛出错误:无效参数。
以模式a
成功打开。
模式a
和a+
到底有什么不同导致这个错误?
a+
模式意味着追加和读取。
由于您最初以只写模式(O_WRONLY | O_CREAT | O_EXCL
)打开文件,因此读访问与初始描述符的模式不兼容。
因此,对fdopen()的调用在EINVAL
中理所当然地失败了。
相关文章:
- std::cin >>上的参数无效
- 结果失败或多个参数无效
- 错误:一元"*"的类型参数无效(具有"int"):使用 mergesort 计算
- 错误 带有模块的一元"*"(具有"int")的类型参数无效
- 由于调用 std::condition_variable 后参数无效而导致应用程序崩溃
- MPI_Iprobe:RMA 调用中的位移参数无效
- 推力::sort_by_key上的配置参数无效
- windres 致命错误:将输出写入时:参数无效
- 一元'*'的类型参数无效(有双精度)
- C++:传递给 C 运行时函数的参数无效
- 矢量模板参数无效
- 写入 -: 参数无效 } 时出错
- winsock2:recvfrom()函数以错误10022(参数无效)结束
- 模板参数的显式指定参数无效,该参数是 constexpr
- 模板参数无效
- 调用 getter 成员时的参数无效
- 模板模板参数中的参数无效
- 方法调用中的参数无效
- POSIX 计时器:参数无效
- C++类模板是一个模板:模板参数无效