试图打开文件c系统调用

时间:2013-02-01 07:30:22

标签: c

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

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

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

2 个答案:

答案 0 :(得分:1)

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

 open("RandomStruct.bin",O_RDWR|O_CREAT, 0755);

答案 1 :(得分:1)

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