我正在尝试使用系统调用打开二进制文件,我无法使用函数(fopen等)
if ((fd2 = open("RandomStruct.bin",O_RDWR|O_CREAT)) == -1)
err_sys("Failed to open binary\n");
这行代码不正确吗?谢谢! 顺便说一下,我得到“:错误0”O.o
答案 0 :(得分:1)
不,这不正确。如果指定O_CREAT标志,则open()需要另一个参数,即新文件的权限位。例如
open("RandomStruct.bin",O_RDWR|O_CREAT, 0755);
答案 1 :(得分:1)
您需要添加其他答案中提到的文件权限,但是,open()
不是系统调用,它只是另一个函数(或包装器),就像fopen()
一样,在libc中反过来调用open
系统调用。我认为你应该检查syscall(),假设你正在使用Linux,它允许你通过传递它的号码(在这种情况下是SYS_open
)和参数(如果你的作业需要使用)来直接调用系统调用系统调用)。