5

access 関数は、how 引数で指定された方法でファイルにアクセスできるかどうかをチェックします。how 引数は、フラグ R_OK、W_OK、X_OK、または存在テスト F_OK のビットごとの OR のいずれかです。

戻り値は、アクセスが許可されている場合は 0、許可されていない場合は -1 です。

ファイルが存在しない場合、アクセスは -1 も返しますか?

ファイルの存在をチェックする機能を開発したい。次のアクセス関数がそれを行った場合、標準に従ってどのような引数を配置する必要がありますか?

if (access("file_example", R_OK | W_OK | X_OK) != -1)

ところで:関数ごとに存在するかどうかを確認したいファイルaccess()は、同じアプリケーションによって作成されています。同じユーザーによって作成されているため、

4

4 に答える 4

10

これらのフラグは、ファイルがプロセスによって実行可能、書き込み可能、​​読み取り可能であるかどうかを確認しますが、多くのファイルはそうではありません。探しているフラグは F_OK です。F_OK は、ファイルの存在のみをテストします。

アクセスについてはマニュアルページを読むことをお勧めします。そこに文書化する必要があります。

于 2012-11-22T08:47:07.580 に答える
2

はい、 にerrno設定しENOENTます。

于 2012-11-22T08:47:56.807 に答える
2

マニュアルページによると、返されるエラーの1つは次のとおりです。

 ENOENT A component of pathname does not exist or is a dangling symbolic link.

また、第 2 段落では、次のように明確に述べています。

 F_OK tests for the existence of the file.
于 2012-11-22T08:48:30.270 に答える