Differenza tra statvfs () e statfs () chiama sistema?
Soluzione
Err, "ragioni storiche".
In origine 4.4BSD definito una chiamata statfs()
. Linux in seguito implementato una chiamata leggermente diverso con lo stesso nome. Posix standardizzato fra tutte le versioni FREENIX e Unix definendo statvfs()
.
statfs()
è OS-specifica
statvfs()
è POSIX-conforme
Mentre tutti ritornano strutture leggermente differenti, quelle successive a venire insieme non può sostituire il primo.
In generale si consiglia di utilizzare statvfs()
, il Posix uno. Fate attenzione a consiglio "usare Posix", anche se, come in alcuni casi (PTY, ad esempio) la BSD (o altro) si è più portabile in pratica.
Altri suggerimenti
Se si desidera solo la capacità di file di sistema e le informazioni di utilizzo, le altre risposte sono corrette: preferiscono statvfs
perché è standard POSIX e gestisce file di grandi dimensioni meglio. statfs
è BSD e Linux-specifiche, con diverse strutture su ciascuno. (Linux 2.6 aggiunge nuove chiamate statfs64
e di sistema fstatfs64
che utilizzano una struttura ampliata per gestire i formati più grandi.) Tuttavia, statfs
è ancora utile su Linux per determinare il tipo di file system (supponendo che stai bene con la scrittura specifico per Linux il codice).
statfs()
è deprecato in favore di statvfs()
, che si occupa molto meglio con il supporto di file di grandi dimensioni. statfs()
è noto per fare cose strane per le dimensioni che superano il valore di un unsigned long.
Per quanto posso dire (e ricordare), statvfs()
è stato intorno dal Redhat 7.3, poco dopo essere stato introdotto in sostituzione POSIX. È probabile trovare su (la maggior parte) dei sistemi moderni.