statfs()
tidak digunakan lagi karena statvfs()
, yang menangani banyak lebih baik dengan dukungan file besar. statfs()
diketahui melakukan hal-hal aneh untuk ukuran yang melebihi nilai unsigned long.
Sejauh yang saya tahu (dan ingat), statvfs()
telah ada sejak Redhat 7.3, setelah diperkenalkan sebagai pengganti POSIX. Anda mungkin akan menemukannya di (kebanyakan) sistem modern.
Err, "alasan historis".
Awalnya 4.4BSD mendefinisikan statfs()
panggilan. Linux kemudian menerapkan panggilan yang sedikit berbeda dengan nama yang sama. Posix membakukannya di antara semua versi freenix dan Unix dengan mendefinisikan statvfs()
.
statfs()
khusus untuk OS
statvfs()
sesuai dengan posix
Karena mereka semua mengembalikan struktur yang sedikit berbeda, yang berikutnya tidak dapat menggantikan yang pertama.
Secara umum Anda harus menggunakan statvfs()
, yang Posix. Berhati-hatilah dengan saran "gunakan Posix", karena dalam beberapa kasus (pty, misalnya) BSD (atau apa pun) lebih portabel dalam praktiknya.
Jika Anda hanya ingin kapasitas sistem file dan informasi penggunaan, jawaban lainnya benar:pilih statvfs
karena ini adalah POSIX standar dan menangani ukuran file besar dengan lebih baik. statfs
adalah BSD- dan Linux-khusus, dengan struktur yang berbeda pada masing-masing. (Linux 2.6 menambahkan statfs64
baru dan fstatfs64
panggilan sistem yang menggunakan struktur yang diperluas untuk menangani ukuran yang lebih besar.) Namun, statfs
masih berguna di Linux untuk menentukan tipe sistem file (dengan asumsi Anda tidak keberatan menulis kode khusus Linux).