Rust Std::OS Linux میں

Rust Std Os Linux My



Rust میں، std::os ماڈیول آپریٹنگ سسٹم کی فعالیت پر ایک تجرید فراہم کرتا ہے۔ یہ ہمیں ماحول کے متغیرات، فائل سسٹم کے آپریشنز، پروسیس مینجمنٹ، اور بہت کچھ کے ساتھ کام کرنے کے لیے بنیادی آپریٹنگ سسٹم کے ساتھ بات چیت کرنے کی اجازت دیتا ہے۔

اس مثال میں، ہم کچھ بنیادی کارروائیوں کا احاطہ کریں گے جو آپ Rust std::os ماڈیول کا استعمال کرتے ہوئے یونکس پر انجام دے سکتے ہیں۔







یہ یاد رکھنا اچھا ہے کہ یہ ایک وسیع ماڈیول ہے اور اس میں یونکس سے متعلق مختلف آپریشنز کے لیے بہت سی اقسام اور افعال شامل ہیں۔ لہذا، براہ کرم متعلقہ عمل کے حوالے کے لیے دستاویزات پر غور کریں۔



لینکس میں مورچا OS

لینکس میں، ہم یونکس کے مخصوص فنکشنز اور اقسام تک رسائی حاصل کر سکتے ہیں جو std::os::unix ماڈیول کے ذریعے فراہم کیے جاتے ہیں، جو Rust میں std::os ماڈیول کا ایک ذیلی ماڈیول ہے۔



یہ ماڈیول Rust معیاری لائبریری کا حصہ ہے اور اس لیے آپ کو کسی بیرونی کریٹ یا انحصار کو انسٹال کرنے کی ضرورت نہیں ہے۔





آئیے کچھ بنیادی API اور آپریشنز کا احاطہ کریں جو ہم اس ماڈیول سے لینکس سسٹم پر انجام دے سکتے ہیں۔

ماحولیاتی متغیرات تک رسائی

ہم std::env ماڈیول کا استعمال کرتے ہوئے ماحولیاتی متغیرات تک رسائی حاصل کر سکتے ہیں۔ مثال کے طور پر، std::env::var('PATH') PATH ماحولیاتی متغیر کی قدر کو بازیافت کرتا ہے۔



مندرجہ ذیل مثال کے پروگرام پر غور کریں:

استعمال کریں std::env؛
std::ffi::OsString استعمال کریں؛

fn ہاتھ ( ) {
// ایک مخصوص ماحولیاتی متغیر تک رسائی حاصل کریں۔
اگر دو ٹھیک ہے ( قدر ) = env::var ( 'WAYLAND_DISPLAY' ) {
پرنٹ ایل این ! ( 'WAYLAND_DISPLAY={}' ، قدر ) ;
}

// تمام ماحولیاتی متغیرات پر اعادہ کریں۔
کے لیے ( کلید، قدر ) میں env::wars_us ( ) {
دو key_string = key.to_string_lossy ( ) ;
دو value_string = value.to_string_lossy ( ) ;
پرنٹ ایل این ! ( '{}:{}' , key_string, value_string ) ;
}

// ایک مخصوص ماحولیاتی متغیر تک رسائی حاصل کریں۔ کے طور پر ایک ` OsString `
اگر دو کچھ ( قدر ) = env::var_us ( 'HOSTYPE' ) {
// تبدیل کریں ` OsString ` کو a ` تار ` اگر ضرورت ہے
اگر دو کچھ ( قدر_str ) = value.to_str ( ) {
پرنٹ ایل این ! ( 'HOSTTYPE={}' , value_str ) ;
}
}
}


دی گئی مثال میں، ہم ضروری ماڈیولز درآمد کرکے شروع کرتے ہیں۔ اس صورت میں، ہم std::env اور std::ff::OsString میں دلچسپی رکھتے ہیں۔

ایک مخصوص ماحولیاتی متغیر تک رسائی کے لیے، ہم env::var فنکشن استعمال کر سکتے ہیں اور اس ویلیو کا نام پاس کر سکتے ہیں جسے ہم لانا چاہتے ہیں۔ اس صورت میں، ہمیں WAYLAND_DISPLAY متغیر کی قدر ملتی ہے۔

فنکشن نتیجہ کی قسم کے طور پر متغیر کی قدر واپس کرتا ہے۔

ہم env::vars_os فنکشن کا استعمال کرتے ہوئے تمام ماحولیاتی متغیرات پر بھی اعادہ کر سکتے ہیں۔ یہ ماحولیاتی متغیرات کے کلیدی قدر کے جوڑے کے ساتھ ایک تکرار کرنے والا لوٹاتا ہے۔ یہ نوٹ کرنا اچھا ہے کہ اقدار کو OsString قسم کے طور پر واپس کیا جاتا ہے۔ پھر ہم to_string_lossy فنکشن کا استعمال کرتے ہوئے انہیں سٹرنگ ویلیوز میں تبدیل کر سکتے ہیں۔

ہم env::var_os فنکشن کا استعمال کرتے ہوئے مخصوص ماحولیاتی متغیرات تک بھی رسائی حاصل کر سکتے ہیں۔ یہ ایک قسم کو واپس کرے گا جسے ہم to_str() فنکشن کا استعمال کرتے ہوئے سٹرنگ میں تبدیل کر سکتے ہیں۔

نتیجے کی پیداوار مندرجہ ذیل ہے:

WAYLAND_DISPLAY =ویلینڈ- 0
HOSTTYPE =x86_64

OS ماڈیول کا استعمال کرتے ہوئے FS آپریشنز

جیسا کہ آپ اندازہ لگا سکتے ہیں، OS ماڈیول فائل سسٹم سے متعلق کارروائیوں کو انجام دینے کے لیے مختلف افعال اور طریقے فراہم کرتا ہے۔

درج ذیل پروگرام کو لیں جو مختلف آپریشنز کو ظاہر کرتا ہے جو ہم لینکس میں std::os ماڈیول کا استعمال کرتے ہوئے انجام دے سکتے ہیں۔

std::fs استعمال کریں؛

fn ہاتھ ( ) {
// پڑھنا a فائل
اگر دو ٹھیک ہے ( مواد ) = fs::read_to_string ( '/home/debian/.bashrc' ) {
پرنٹ ایل این ! ( 'bashrc: {}' , مواد ) ;
}

// ایک نئی ڈائریکٹری بنائیں
اگر دو غلطی ( غلطی ) = fs::create_dir ( '/home/debian/new_dir' ) {
eprintln ! ( 'ڈائریکٹری بنانے میں ناکام: {}' ، غلطی ) ;
}

// ہٹانا a فائل
اگر دو غلطی ( غلطی ) = fs::remove_file ( '/home/debian/remove_me.txt' ) {
eprintln ! ( 'فائل کو ہٹانے میں ناکام: {}' ، غلطی ) ;
}
}


دی گئی مثال میں، ہم یہ ظاہر کرتے ہیں کہ ہم fs::read_to_string() طریقہ استعمال کرکے فائل کے مواد کو کیسے پڑھ سکتے ہیں۔ یہ طریقہ ٹارگٹ فائل کا راستہ لیتا ہے اور فائل کے مواد کو سٹرنگ کے طور پر واپس کرتا ہے۔

ہم fs::create_dir() فنکشن کا استعمال کرتے ہوئے ایک نئی ڈائرکٹری بھی بنا سکتے ہیں اور پیرامیٹر کے طور پر ٹارگٹ ڈائرکٹری کا راستہ پاس کر سکتے ہیں۔

آخر میں، ہم fs::remove_file() فنکشن کا استعمال کرتے ہوئے ایک مخصوص فائل کو ہٹا سکتے ہیں اور ہدف فائل کو پیرامیٹر کے طور پر پاس کر سکتے ہیں۔

نوٹ: فراہم کردہ مثالیں کچھ بنیادی مثالیں ہیں کہ std::fs ماڈیول کا استعمال کرتے ہوئے لینکس پر فائل سسٹم کے آپریشنز کو کیسے انجام دیا جائے۔ زنگ ان طریقوں اور افعال کا ایک جامع مجموعہ فراہم کرتا ہے جس کا مظاہرہ یہاں کیا گیا ہے۔ مزید جاننے کے لیے دستاویزات کا حوالہ دیں۔

OS ماڈیول کا استعمال کرتے ہوئے عمل کا انتظام

جیسا کہ آپ اندازہ لگا سکتے ہیں، OS ماڈیول سسٹم میں عمل کے ساتھ کام کرنے کے لیے ذیلی ماڈلز اور خصوصیات فراہم کرتا ہے۔

مندرجہ ذیل مثال کوڈ لیں:

std::process:: استعمال کریں { کمانڈ، باہر نکلیں } ;

fn ہاتھ ( ) {
// چلائیں ls کمانڈ
دو آؤٹ پٹ = کمانڈ :: نیا ( 'ls' )
.arg ( '-وہ' )
آؤٹ پٹ ( )
.توقع ( 'کمانڈ پر عمل کرنے میں ناکام' ) ;

اگر output.status.success ( ) {
دو stdout = String::from_utf8_lossy ( اور output.stdout ) ;
پرنٹ ایل این ! ( 'کمانڈ آؤٹ پٹ: \n {}' ، stdout ) ;
} اور {
دو stderr = String::from_utf8_lossy ( اور output.stderr ) ;
eprintln ! ( 'حکم ناکام: \n {}' ، stderr ) ;
باہر نکلیں ( 1 ) ;
}
}


دی گئی مثال میں، ہم مطلوبہ ماڈیولز درآمد کرکے شروع کرتے ہیں۔ اس صورت میں، ہمیں std::process submodule سے 'command' اور 'exit' طریقوں کی ضرورت ہے۔

پھر ہم 'ls' کمانڈ کو چلانے کے لیے Command::new() فنکشن کا استعمال کرتے ہیں اور آرگیومینٹس کو کمانڈ میں منتقل کرتے ہیں۔

اگر کامیاب ہو جائے تو، کمانڈ کو موجودہ ورکنگ ڈائرکٹری کے لیے مندرجہ ذیل ڈائریکٹری کی فہرست واپس کرنی چاہیے:

نتیجہ

ہم نے دریافت کیا کہ لینکس اور یونکس جیسے سسٹمز میں ایک سے زیادہ آپریشن کرنے کے لیے std::os ماڈیول اور ذیلی ماڈلز کے ذریعے فراہم کردہ مختلف فنکشنز اور طریقوں کو کیسے استعمال کیا جائے۔ یاد رکھیں کہ std::os ماڈیول ایک وسیع ماڈیول ہے جو اس ٹیوٹوریل میں دکھائے گئے خصوصیات کے مقابلے میں وسیع تر خصوصیات پر مشتمل ہے۔