سؤال

وأنا أحاول الحصول على معلومات مثل إصدار نظام التشغيل، مساحة القرص الصلب، والمساحة المتوفرة على القرص، وذاكرة الوصول العشوائي المثبتة على نظام لينكس في C ++. أعرف أنني أستطيع أن استخدام system() لتشغيل الأوامر لينكس مختلفة والتقاط إنتاجها (وهو ما أقوم به حاليا) ولكني أتساءل عما اذا كان هناك طريقة أفضل؟ هل هناك شيء في المكتبة القياسية في C ++ التي يمكن استخدامها للحصول على معلومات من نظام التشغيل؟

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم * الأوامر لا شىء عن طريق النظام.

وبعد قيام رجل التمرير إلى أسفل الصفحة رجل وسوف تظهر لك عادة ما ترتبط استدعاءات النظام ذات الصلة C.

Example:  man uname:
SEE ALSO
       uname(2), getdomainname(2), gethostname(2)


Explanation of numbers:

(1): User UNIX Command
(2): Unix and C system calls
(3): C Library routines
(4): Special file names
(5): File formats
(6): 
(7):
(8): System admin commands

وحتى إذا كنت تستخدم نظام ( "uname"). من الصفحة رجل يمكنك أن ترى أن هناك أيضا استدعاء نظام uname C (uname (2)). بحيث يمكنك القيام به الآن "رجل 2 uname" للحصول على معلومات حول كيفية استخدام uname استدعاء نظام C.

نصائح أخرى

وليس هناك شيء في مكتبة C ++ القياسية لهذه الأغراض. المكتبة التي يمكن استخدامها موجودة libhal، التي خلاصات وجهة نظر البرامج إلى الأجهزة، وجمع المعلومات من مختلف /proc، /sys وغيرها. HAL ، انتقل لأسفل، يبدو أن هناك غير رسمي C ++ ملزمة متاح أيضا (ملاذ ' ر اختباره على الرغم من، في حين يعمل libhal أيضا غرامة لC ++ البرامج). استخدام lshal الأمر لعرض جميع المعلومات المتوفرة لجهاز HAL.

إذا كنت لا تريد استخدام HAL كما يوحي litb، يمكنك قراءة الامور في نصابها الصحيح من / إجراءات نظام الملفات ، شريطة انه هناك على النظام الخاص بك. ليست هذه هي الطريقة الأكثر منصة مستقلة للقيام بهذه الأمور، وفي كثير من الحالات ستحتاج أن تفعل القليل من الاعراب لاختيار ما عدا الملفات.

وأعتقد HAL خلاصات الكثير من هذه التفاصيل بالنسبة لك، ولكن أعرف فقط أنه يمكنك قراءتها مباشرة من / إجراءات في حالة استخدام مكتبة ليس خيارا.

ونظام المعلومات هي عن طريق تعريف لا المحمولة، وحتى لا يكون هناك أي حل القياسية. أفضل رهان هو استخدام المكتبة التي يقوم بمعظم العمل نيابة عنك. واحدة من هذه المكتبة عبر منصة (على عكس نصف، والذي هو حاليا لينكس معين) هو SIGAR API ، الذي هو المصدر المفتوح راجع للشغل. لقد استعملت في مشروع C ++ دون الكثير من المتاعب (التثبيت قليلا غير القياسية ولكن يمكن أن أحسب بسهولة)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top