2009-06-29 10 views
0

ich RHEL bin mit 4stat systecall in Linux Rückkehr Fehler

i syscall stat bin mit wie folgt: -

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

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

manchmal bekomme ich Fehlermeldung als "" Ein unerwarteter Fehler ist aufgetreten 0"

Das bedeutet, ich bekomme Fehler als "0". Ich überprüfte Dateiberechtigungen, die in Ordnung sind

was bedeutet das? Ich bin nicht in der Lage zu verstehen, warum manchmal das passiert?

Irgendwelche Vorschläge?

Antwort

1

Gibt es Ihnen eine sinnvolle Fehlermeldung, wenn Sie es so nennen?

if (stat("file", &stat_obj) == -1) { 
     perror("stat"); 
    } 
+0

ich habe strerror (errno) aber es gibt Erfolg zurück – anish

1

Haben Sie einen Signalhandler in Ihrem Programm? Wenn ja, und es errno beeinflussen kann, dann stellen Sie sicher, dass es bei der Eingabe errno speichert und stellt es auf seinen ursprünglichen Wert vor der Rückkehr.

Vergewissern Sie sich auch, dass Sie #include <errno.h>, und nicht errno selbst deklarieren, vor allem, wenn Ihr Programm Multithread ist. errno ist eine per-thread-Variable, also wenn Sie es als global deklarieren, können Sie den falschen bekommen. (Auf manchen Plattformen benötigen Sie manchmal auch ein spezielles Kompilierungsflag wie -D_TS_ERRNO für thread-sicheres errno, aber unter Linux ist kein solches Flag erforderlich.)

+0

Alle guten Vorschläge und wahrscheinlich die Das Beste, was in Abwesenheit von mehr Informationen getan werden kann. – Duck