الفرق بين مكالمات النظام STATVFS () و STATFS ()؟
المحلول
خطأ، "الأسباب التاريخية".
في الأصل 4.4BSD محددة statfs()
يتصل. قام Linux في وقت لاحق بتطبيق مكالمة مختلفة قليلا بنفس الاسم. بوسيكس توحيدها بين جميع إصدارات FREENIX و UNIX عن طريق تحديد statvfs()
.
statfs()
هو نظام التشغيل الخاص
statvfs()
هو posix مطابقة
لأنهم جميعا يعودون هياكل مختلفة قليلا، في وقت لاحق يمكنهم أن يحل محل الأول.
بشكل عام يجب عليك استخدامها statvfs()
, ، بوسيكس واحد. كن حذرا حول نصيحة "استخدام POSIX"، كما هو الحال في بعض الحالات (PTY، على سبيل المثال) The BSD (أو أيا كان) واحد أكثر محمولة في الممارسة.
نصائح أخرى
إذا كنت تريد فقط سعة نظام الملفات ومعلومات الاستخدام، فإن الإجابات الأخرى صحيحة: تفضل statvfs
لأنها ستوسيكس القياسية وتتناول أحجام الملفات الكبيرة بشكل أفضل. statfs
هو BSD- و Linux الخاص، مع هياكل مختلفة على كل منها. (لينكس 2.6 أضيف جديد statfs64
و fstatfs64
يدعو النظام الذي يستخدم بنية موسعة للتعامل مع الأحجام الكبيرة.) ومع ذلك، statfs
لا يزال مفيدا في Linux لتحديد نوع نظام الملفات (على افتراض أنك بخير مع كتابة رمز Linux الخاص).
statfs()
تم إهمالها لصالح statvfs()
, ، أي اتفاقات إلى حد كبير أفضل مع دعم الملفات الكبيرة. statfs()
من المعروف أن تفعل أشياء غريبة للأحجام التي تتجاوز قيمة طويلة غير موقعة.
بقدر ما أستطيع أن أقول (وتذكر)، statvfs()
كان موجودا منذ Redhat 7.3، بعد إدخاله باستبدال Posix. من المحتمل أن تجدها على الأنظمة الحديثة (معظم).