Rust Std :: OS في لينكس

Rust Std Os Fy Lynks



في Rust ، توفر الوحدة النمطية std :: os تجريدًا لوظائف نظام التشغيل. يسمح لنا بالتفاعل مع نظام التشغيل الأساسي للعمل مع متغيرات البيئة وعمليات نظام الملفات وإدارة العمليات والمزيد.

في هذا المثال ، سنغطي بعض العمليات الأساسية التي يمكنك إجراؤها على Unix باستخدام وحدة Rust std :: os.







من الجيد أن تتذكر أن هذه وحدة شاملة وتحتوي على العديد من الأنواع والوظائف لمختلف العمليات المتعلقة بـ Unix. لذلك ، يرجى النظر في الوثائق للرجوع إليها بشأن العمليات المقابلة.



نظام التشغيل Rust OS في Linux

في Linux ، يمكننا الوصول إلى الوظائف والأنواع الخاصة بـ Unix التي توفرها الوحدة النمطية std :: os :: unix ، وهي وحدة فرعية من الوحدة النمطية std :: os في Rust.



هذه الوحدة هي جزء من مكتبة Rust القياسية وبالتالي لا تتطلب منك تثبيت أي صندوق خارجي أو تبعيات.





دعنا نغطي بعض API والعمليات الأساسية التي يمكننا تنفيذها على نظام Linux من هذه الوحدة.

الوصول إلى متغيرات البيئة

يمكننا الوصول إلى متغيرات البيئة باستخدام وحدة std :: env. على سبيل المثال ، يسترد std :: env :: var (“PATH”) قيمة متغير بيئة PATH.



خذ بعين الاعتبار البرنامج المثال التالي:

استخدام الأمراض المنقولة جنسيا :: env ؛
استخدم std :: ffi :: OsString؛

يد الجبهة ( ) {
// الوصول إلى متغير بيئة محدد
لو يترك نعم ( قيمة ) = env :: var ( 'WAYLAND_DISPLAY' ) {
println ! ( 'WAYLAND_DISPLAY = {}' ، قيمة ) ؛
}

// كرر على جميع متغيرات البيئة
ل ( مفتاح القيمة ) في env :: wars_us ( ) {
يترك key_string = key.to_string_lossy ( ) ؛
يترك value_string = value.to_string_lossy ( ) ؛
println ! ( '{}: {}' ، key_string ، value_string ) ؛
}

// الوصول إلى متغير بيئة محدد مثل ا ' أوسترينج '
لو يترك بعض ( قيمة ) = env :: var_us ( 'HOSTTYPE' ) {
// يتحول ' أوسترينج ' إلى أ ' خيط ' لو ضروري
لو يترك بعض ( القيمة_ستر ) = value.to_str ( ) {
println ! ( 'HOSTTYPE = {}' ، value_str ) ؛
}
}
}


في المثال المعطى ، نبدأ باستيراد الوحدات الضرورية. في هذه الحالة ، نحن مهتمون بـ std :: env و std :: ff :: OsString.

للوصول إلى متغير بيئة معين ، يمكننا استخدام وظيفة env :: var وتمرير اسم القيمة التي نرغب في جلبها. في هذه الحالة ، نحصل على قيمة المتغير WAYLAND_DISPLAY.

ترجع الدالة قيمة المتغير كنوع نتيجة.

يمكننا أيضًا تكرار جميع متغيرات البيئة باستخدام وظيفة env :: vars_os. يؤدي هذا إلى إرجاع مكرر مع أزواج القيمة الرئيسية لمتغيرات البيئة. من الجيد ملاحظة أنه يتم إرجاع القيم كنوع OsString. يمكننا بعد ذلك تحويلها إلى قيم سلسلة باستخدام الدالة to_string_lossy.

يمكننا أيضًا الوصول إلى متغيرات البيئة المحددة باستخدام وظيفة env :: var_os. يجب أن يعيد هذا النوع

الناتج الناتج هو كما يلي:

WAYLAND_DISPLAY = وايلاند- 0
هوستيب = x86_64

عمليات FS باستخدام وحدة نظام التشغيل

كما يمكنك التخمين ، توفر وحدة نظام التشغيل العديد من الوظائف والأساليب لإجراء العمليات المتعلقة بنظام الملفات.

خذ البرنامج التالي الذي يوضح العمليات المختلفة التي يمكننا إجراؤها باستخدام وحدة std :: os في Linux:

استخدام الأمراض المنقولة جنسيا :: fs ؛

يد الجبهة ( ) {
// اقرأ ملف
لو يترك نعم ( محتويات ) = fs :: read_to_string ( '/home/debian/.bashrc' ) {
println ! ( 'باشرك: {}' ، محتويات ) ؛
}

// قم بإنشاء دليل جديد
لو يترك خطأ ( يخطئ ) = fs :: create_dir ( '/ home / debian / new_dir' ) {
البريد الإلكتروني ! ( 'فشل إنشاء الدليل: {}' ، يخطئ ) ؛
}

// قم بإزالة أ ملف
لو يترك خطأ ( يخطئ ) = fs :: remove_file ( '/home/debian/remove_me.txt' ) {
البريد الإلكتروني ! ( 'فشل إزالة الملف: {}' ، يخطئ ) ؛
}
}


في المثال المعطى ، نوضح كيف يمكننا قراءة محتويات الملف باستخدام طريقة fs :: read_to_string (). تأخذ الطريقة المسار إلى الملف الهدف وتعيد محتويات الملف كسلسلة.

يمكننا أيضًا إنشاء دليل جديد باستخدام وظيفة fs :: create_dir () وتمرير المسار إلى الدليل الهدف كمعامل.

أخيرًا ، يمكننا إزالة ملف معين باستخدام وظيفة fs :: remove_file () وتمرير الملف الهدف كمعامل.

ملحوظة: الأمثلة المقدمة هي بعض الأمثلة الأساسية حول كيفية إجراء عمليات نظام الملفات على Linux باستخدام وحدة std :: fs. يوفر Rust مجموعة شاملة من الأساليب والوظائف الموضحة هنا. الرجوع إلى الوثائق لمعرفة المزيد.

إدارة العمليات باستخدام وحدة نظام التشغيل

كما يمكنك التخمين ، توفر وحدة نظام التشغيل وحدات فرعية وميزات للعمل مع العمليات في النظام.

خذ مثال الكود التالي:

استخدام الأمراض المنقولة جنسيا :: العملية :: { يأمر، مخرج } ؛

يد الجبهة ( ) {
// قم بتشغيل ls يأمر
يترك الإخراج = الأمر :: جديد ( 'ls' )
.arg ( '-ال' )
.انتاج ( )
.يتوقع ( 'فشل تنفيذ الأمر' ) ؛

لو الإخراج. الحالة.النجاح ( ) {
يترك stdout = سلسلة :: from_utf8_lossy ( & الإخراج ) ؛
println ! ( 'إخراج الأمر: {} ' ، stdout ) ؛
} آخر {
يترك stderr = سلسلة :: from_utf8_lossy ( & الإخراج ) ؛
البريد الإلكتروني ! ( 'فشل الأمر: {} ' ، ستدير ) ؛
مخرج ( 1 ) ؛
}
}


في المثال المعطى ، نبدأ باستيراد الوحدات المطلوبة. في هذه الحالة ، نحتاج إلى التابعين 'command' و 'exit' من الوحدة الفرعية std :: process.

ثم نستخدم الوظيفة Command :: new () لتشغيل الأمر “ls” وتمرير المعطيات إلى الأمر.

إذا نجح الأمر ، يجب أن يُرجع الأمر قائمة الدليل لدليل العمل الحالي على النحو التالي:

خاتمة

اكتشفنا كيفية استخدام الوظائف والطرق المختلفة التي توفرها وحدة std :: os والوحدات الفرعية لإجراء عمليات متعددة في أنظمة Linux و Unix. تذكر أن الوحدة النمطية std :: os هي وحدة شاملة تحتوي على مجموعة من الميزات أكبر من تلك الموضحة في هذا البرنامج التعليمي.