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