簡體   English   中英

linux中的stat systecall返回錯誤

[英]stat systecall in linux returning error

我正在使用RHEL 4

我正在使用syscall統計信息,如下所示:

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

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

有時我會收到錯誤消息,例如““發生意外錯誤0”

那意味着我得到錯誤為“ 0”。 我檢查了可以的文件權限

這意味着什么? 我不明白為什么有時會發生這種情況?

有什么建議么?

如果您這樣稱呼它,它會給您任何有意義的錯誤信息嗎?

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

您的程序中是否有信號處理程序? 如果是這樣,則可能會影響errno ,然后確保在輸入時保存errno並在返回之前將其恢復為原始值。

還要確保您#include <errno.h> ,並且不要自己聲明errno ,特別是如果您的程序是多線程的。 errno是每個線程的變量,因此,如果將其聲明為全局變量,則會得到錯誤的變量。 (在某些平台上,有時對於線程安全的errno,還需要一個特殊的編譯標志,例如-D_TS_ERRNO ,但在Linux上則不需要這樣的標志。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM