stat systecall in linux errore di ritorno
-
21-08-2019 - |
Domanda
Sto usando RHEL 4
Sto usando syscall stat come segue: -
if (stat ("file",&stat_obj)){
if (errno == ENOENT){
printf("File not found");
}else{
printf("Unexpected error occured %d ",errno);
}
}
a volte ricevo un messaggio di errore come " " Si è verificato un errore imprevisto 0 "
Ciò significa che ricevo l'errore come " 0 " . ho controllato i permessi dei file che sono ok
cosa significa? Non riesco a capire perché a volte questo accada?
Qualche suggerimento?
Soluzione
Ti dà qualche messaggio di errore significativo se lo chiami in questo modo?
if (stat("file", &stat_obj) == -1) {
perror("stat");
}
Altri suggerimenti
Hai un gestore dei segnali nel tuo programma? In tal caso, e potrebbe influire su errno
, quindi assicurati di salvare #include <errno.h>
sulla voce e ripristinarlo al valore originale prima di tornare.
Assicurati anche di -D_TS_ERRNO
e di non dichiararti <=> te stesso, specialmente se il tuo programma è multithread. <=> è una variabile per thread, quindi se la dichiari globale è possibile ottenere quella sbagliata. (Su alcune piattaforme a volte è necessario anche uno speciale flag di compilazione come <=> per errno thread-safe, ma su Linux non è necessario tale flag.)