0

我正在尝试使用系统调用打开二进制文件,但无法使用函数(fopen 等)

if ((fd2 = open("RandomStruct.bin",O_RDWR|O_CREAT)) == -1) 
        err_sys("Failed to open binary\n");

这行代码不正确吗?谢谢!顺便说一句,我得到“:错误 0”Oo

4

2 回答 2

1

不,这是不正确的。如果您指定 O_CREAT 标志,则 open() 需要另一个参数,即新文件的权限位。例如

 open("RandomStruct.bin",O_RDWR|O_CREAT, 0755);
于 2013-02-01T07:34:23.870 回答
1

您需要添加另一个答案中提到的文件权限,但是,open()它不是系统调用,它只是另一个函数(或包装器),就像fopen()libc 中的 ,​​ 依次调用open系统调用一样。我认为你应该检查syscall(),假设你使用的是 Linux,它允许你通过传递它的数字(在这种情况下SYS_open)和参数(如果你的分配需要使用系统调用)来直接调用系统调用。

于 2013-02-01T07:34:43.753 回答