2013-02-01 22 views
0

我试图使用系统调用来打开一个二进制文件,我不能使用的功能(FOPEN等)试图打开一个文件c系统调用

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

是这行代码不正确的?谢谢! btw我得到“:Error 0”O.o

回答

1

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

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

您需要添加的文件权限如其他答复中提到,然而,open()不是一个系统调用,它只是另一个函数(或包装),就像fopen(),在libc,就是依次拨打系统调用请致电open。我想你应该检查syscall(),假设你使用的是Linux,它允许你通过传递它的编号(在这个例子中为SYS_open)和参数(如果你的任务需要使用系统调用)来直接调用系统调用。

+0

你的回答是完全有效的,但在我看来是不完整的。 你可以纠正他的误解,并帮助他修复他的代码 – Fingolfin

+0

@AdelQodmani是的,但我不想重复,除了正确调用打开这里是不相关的,如果作业/任务需要使用系统调用而不是OP提到的功能。 – iabdalkader

+0

@AdelQodmani无论如何更新。 – iabdalkader

相关问题