statfs()
ist zugunsten von statvfs()
veraltet , die beträchtlich handelt besser mit Unterstützung für große Dateien. statfs()
ist dafür bekannt, seltsame Dinge bei Größen zu tun, die den Wert eines unsigned long überschreiten.
Soweit ich das beurteilen kann (und mich erinnere), statvfs()
gibt es seit Redhat 7.3, kurz nachdem es als POSIX-Ersatz eingeführt wurde. Sie werden es wahrscheinlich auf (den meisten) modernen Systemen finden.
Ähm, "historische Gründe".
Ursprünglich definierte 4.4BSD einen statfs()
Anruf. Linux implementierte später einen etwas anderen Aufruf mit demselben Namen. Posix standardisierte es zwischen allen Freenix- und Unix-Versionen, indem es statvfs()
definierte .
statfs()
ist betriebssystemspezifisch
statvfs()
ist posixkonform
Da sie alle leicht unterschiedliche Strukturen zurückgeben, können spätere die ersten nicht ersetzen.
Im Allgemeinen sollten Sie statvfs()
verwenden , die Posix. Seien Sie jedoch vorsichtig mit den Ratschlägen "benutze Posix", da in einigen Fällen (z. B. pty) der BSD (oder was auch immer) in der Praxis besser portierbar ist.
Wenn Sie nur Informationen zur Kapazität und Nutzung des Dateisystems wünschen, sind die anderen Antworten richtig:bevorzugen Sie statvfs
weil es Standard-POSIX ist und große Dateigrößen besser handhabt. statfs
ist BSD- und Linux-spezifisch, mit jeweils unterschiedlichen Strukturen. (Linux 2.6 hat den neuen statfs64
hinzugefügt und fstatfs64
Systemaufrufe, die eine erweiterte Struktur verwenden, um größere Größen zu verarbeiten.) statfs
ist unter Linux immer noch nützlich, um den Dateisystemtyp zu bestimmen (vorausgesetzt, Sie sind damit einverstanden, Linux-spezifischen Code zu schreiben).