statfs()
je zastaralé ve prospěch statvfs()
, která se značně zabývá lepší s podporou velkých souborů. statfs()
je známo, že dělá zvláštní věci pro velikosti, které přesahují hodnotu dlouhého bez znaménka.
Pokud vím (a pamatuji si), statvfs()
existuje od Redhat 7.3, těsně poté, co byl představen jako náhrada POSIX. Pravděpodobně jej najdete na (většině) moderních systémů.
Err, "historické důvody".
Původně 4.4BSD definovalo statfs()
volání. Linux později implementoval mírně odlišné volání se stejným názvem. Posix jej standardizoval mezi všemi freenixovými a unixovými verzemi definicí statvfs()
.
statfs()
je specifický pro OS
statvfs()
je v souladu s posix
Protože všechny vracejí mírně odlišné struktury, ty, které přijdou později, nemohou nahradit první.
Obecně byste měli používat statvfs()
, ten Posix. Dávejte si však pozor na radu "použijte Posix", protože v některých případech (například pty) je v praxi přenosnější BSD (nebo cokoliv jiného).
Pokud chcete pouze informace o kapacitě a využití systému souborů, ostatní odpovědi jsou správné:preferujte statvfs
protože jde o standardní POSIX a lépe si poradí s velkými soubory. statfs
je specifický pro BSD a Linux, každý s jinou strukturou. (Linux 2.6 přidal nový statfs64
a fstatfs64
systémová volání, která používají rozšířenou strukturu ke zpracování větších velikostí.) Nicméně statfs
je v Linuxu stále užitečný pro určení typu souborového systému (za předpokladu, že jste v pořádku s psaním kódu specifického pro Linux).