0

RHEL 4 を使用しています

私は次のようにsyscall statを使用しています:-

if (stat ("file",&stat_obj)){

     if (errno == ENOENT){
        printf("File not found");
     }else{
        printf("Unexpected error occured %d ",errno);
     }
}

「予期しないエラーが発生しました 0」というエラー メッセージが表示されることがあります。

つまり、 "0" としてエラーが発生します。ファイルのアクセス許可を確認しましたが、問題ありません

どういう意味ですか?なぜ時々これが起こっているのか理解できませんか?

助言がありますか?

4

2 に答える 2

1

このように呼び出すと、意味のあるエラーメッセージが表示されますか?

   if (stat("file", &stat_obj) == -1) {
       perror("stat");
   }
于 2009-06-29T08:44:18.147 に答える
1

プログラムにシグナルハンドラはありますか? その場合は、 に影響を与える可能性があるため、エントリをerrno保存errnoし、戻る前に元の値に復元するようにしてください。

また、特にプログラムがマルチスレッドの場合は、 および が自分自身を #include <errno.h>宣言していないことを確認してください。はスレッドごとの変数であるため、グローバルとして宣言すると、間違った変数を取得する可能性があります。(一部のプラットフォームでは、スレッドセーフな errno のような特別なコンパイル フラグも必要になることがありますが、Linux ではそのようなフラグは必要ありません。)errnoerrno-D_TS_ERRNO

于 2009-06-29T14:21:34.097 に答える