0

システム コールを使用してバイナリ ファイルを開こうとしています。関数 (fopen など) を使用できません。

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

このコード行は間違っていますか? ありがとう!ところで、「:エラー0」が表示されますOo

4

2 に答える 2

1

いいえ、正しくありません。O_CREATフラグを指定する場合、open()には別の引数が必要です。これは、新しいファイルの許可ビットです。例えば

 open("RandomStruct.bin",O_RDWR|O_CREAT, 0755);
于 2013-02-01T07:34:23.870 に答える
1

他の回答で述べたようにファイルパーミッションを追加する必要がありますが、システムコールではなく、 libcのopen()ように、システムコールを呼び出す別の関数(またはラッパー)です。Linuxを使用していると仮定すると、代わりにsyscall()をチェックする必要があると思います。これにより、番号(この場合)と引数(割り当てでシステムコールを使用する必要がある場合)を渡すことでシステムコールを直接呼び出すことができます。fopen()openSYS_open

于 2013-02-01T07:34:43.753 に答える