试图打开一个c系统调用的文件

试图打开一个c系统调用的文件,c,C,我试图使用系统调用打开二进制文件,但无法使用函数(fopen等) 这行代码不正确吗?谢谢 顺便说一句:错误0“O.O不,它不正确。如果指定O_CREAT标志,则open()需要另一个参数,即新文件的权限位。e、 g open("RandomStruct.bin",O_RDWR|O_CREAT, 0755); 您需要添加另一个答案中提到的文件权限,但是,open()不是系统调用,它只是另一个函数(或包装器),就像libc中的fopen(),后者反过来调用open系统调用。我认为您应该改为检查,

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

这行代码不正确吗?谢谢
顺便说一句:错误0“O.O

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

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

您需要添加另一个答案中提到的文件权限,但是,
open()
不是系统调用,它只是另一个函数(或包装器),就像libc中的
fopen()
,后者反过来调用
open
系统调用。我认为您应该改为检查,假设您使用的是Linux,它允许您通过传递系统调用的编号(在本例中为
SYS\u open
)和参数(如果您的分配需要使用系统调用)直接调用系统调用

你的回答完全正确,但在我看来是不完整的。你既可以纠正他的误解,也可以帮助他纠正错误code@AdelQodmani是的,但是我不想重复,如果作业/作业要求使用系统调用而不是OP提到的函数,那么除了正确调用open之外,这里是不相关的。
 open("RandomStruct.bin",O_RDWR|O_CREAT, 0755);