簡體   English   中英

fstat()返回0,文件大小為0,錯誤號為11

[英]fstat() return 0, with file size 0 and errno 11

我正在代碼中嘗試以下操作:

{

   int y,n_bytes;

   struct stat temp_data;

   y = fstat(netdev->queue_fd[class_id],&temp_data);
   printf("Success - %d , size -> %lld , Error- %d \n",y,temp_data.st_size,errno);
   n_bytes = write(netdev->queue_fd[class_id],buffer->data,buffer->size);
   y = fstat(netdev->queue_fd[class_id],&temp_data);
   printf("After write Success - %d , size -> %lld , Error- %d and the value of n_bytes is - %d ",y,temp_data.st_size,errno,n_bytes);

}

我得到的輸出是:

Success - 0, size -> 0 , Error - 11 
After write Success - 0, size -> 0, Error - 11 and the value of n_bytes is - 1526 

大小為0且錯誤號為11的原因是什么? 還有其他方法可以獲取文件大小嗎?

注意:這里Netdev->queue_fd[class_id]是文件描述符。 在不同的調用中,n_bytes的值在{41,1514,66,..}之間變化。 (始終大於0)

謝謝

  1. 成功后errno的狀態無關緊要。 errno的值僅在失敗時修改。 fstat()返回零,因此errno的值無關緊要。

  2. write()返回什么? 您沒有檢查,因此您不知道在write()調用之后文件應該更大。

Netdev->queue_fd[class_id]是以下文件的文件描述符

  • 常規文件或
  • 任何sys / fs條目或
  • 字符/塊/網絡設備文件?

如果它不是常規文件,則在執行寫命令后不會更新其大小

通過S_ISREG()檢查文件類型

暫無
暫無

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

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