2012-01-08 12 views
2

私はファイルウォッチャーとstatを何らかの理由で作成していますが、ファイル情報を保持できません。なぜですか?statが動作しない


struct stat info; 
int fd = open(path, O_EVTONLY); 
if (fd <= 0){ 
    exit(-1); 
} 
int result = fstat(fd, &info); 
if (!result){ 
    exit(-1); //This happens! Errno says "No such file or directory" but that cant be because open would've failed 
} 
+1

あなたはfstat()が必要だと思います。 – wildplasser

+0

@wildplasserうん、私はそれを使用した、ちょうどここでミスタイプした – chacham15

+0

まあ、ミスタイプはしないでください。人々は間違ったエラーに反応する可能性があります。 – wildplasser

答えて

4
int result = fstat(fd, &info); 
if (!result){ 
    exit(-1); 
} 

チェックfstat manページには、成功0で返されます。

+0

haha​​ha、深夜コーディング。ありがとう! – chacham15

+0

@ chacham15よろしくお願いします! – ouah

+0

私は 'stat'の代わりに' fstat'を使うように答えを更新しました。 – ouah

3

statは、ほとんどの標準的なlibc関数と同様に成功するとゼロを返します。

これはように設計されているので、簡単にライブラリ・コールの連鎖でエラーをチェックすることができます

if (stat(fd, &info)) { 
    perror("stat"); 
    exit(1); 
} 
//stat succeeded. 

if (...) { 

} 
1

使用状況から、私は)(あなたがFSTATをしたいと仮定します。 fstat()は引数としてfdをとり、stat()は文字列を取ります。

関連する問題