2011-04-26 86 views
7

我想在linux操作系統上找到磁盤上文件的大小。 我知道這樣做的命令: du -s -h如何在linux上獲取磁盤上的文件大小?

有什麼方法可以用c/C++代碼找到它嗎?

+0

我的理解是因爲硬盤是塊設備所以雖然我寫的只是10個字節的文件時,內核會在BLOCK_SIZE方面分配塊的文件。即(512字節)。假設磁盤總大小爲1KB,並且我們已經創建了兩個每個10bytes的文件,然後磁盤已滿或沒有?我對麼 ? – Ashish 2011-04-26 18:01:18

+1

在Linux上,大多數文件系統使用4 KB的塊大小(也就是說,每個fs塊都由8個512字節塊組成),所以沒有塊適合1KB文件系統(不考慮元數據開銷等)。 – janneb 2011-04-26 19:20:08

+0

我知道了,我只舉例1KB。謝謝我得到了我的答案。 – Ashish 2011-04-26 20:50:19

回答

13

是,使用stat(2)系統調用:

#include <sys/stat.h> 
... 
struct stat statbuf; 

if (stat("file.dat", &statbuf) == -1) { 
    /* check the value of errno */ 
} 

printf("%9jd", (intmax_t) statbuf.st_size); 
+0

@unapersson是的,它是 – cnicutar 2011-04-26 16:03:45

+0

請注意,要獲得實際的磁盤大小,您需要查看st_blocks * 512,而不是st_size – Hasturkun 2011-04-26 16:17:40

+1

+1以正確打印大整數類型! – 2011-04-26 16:37:07

相關問題