লিনাক্সে মরিচা Std::OS

Linakse Marica Std Os



মরিচা-এ, std::os মডিউল অপারেটিং সিস্টেমের কার্যকারিতার উপর একটি বিমূর্ততা প্রদান করে। এটি আমাদেরকে এনভায়রনমেন্ট ভেরিয়েবল, ফাইল সিস্টেম অপারেশন, প্রসেস ম্যানেজমেন্ট এবং আরও অনেক কিছুর সাথে কাজ করার জন্য অন্তর্নিহিত অপারেটিং সিস্টেমের সাথে ইন্টারঅ্যাক্ট করতে দেয়।

এই উদাহরণে, আমরা কিছু মৌলিক ক্রিয়াকলাপ কভার করব যা আপনি Rust std::os মডিউল ব্যবহার করে ইউনিক্সে সম্পাদন করতে পারেন।







এটি মনে রাখা ভাল যে এটি একটি বিস্তৃত মডিউল এবং এতে বিভিন্ন ইউনিক্স-সম্পর্কিত ক্রিয়াকলাপের জন্য অনেক প্রকার এবং ফাংশন রয়েছে। অতএব, অনুগ্রহ করে সংশ্লিষ্ট প্রক্রিয়ার রেফারেন্সের জন্য ডকুমেন্টেশন বিবেচনা করুন।



লিনাক্সে মরিচা ওএস

লিনাক্সে, আমরা ইউনিক্স-নির্দিষ্ট ফাংশন এবং প্রকারগুলি অ্যাক্সেস করতে পারি যা std::os::unix মডিউল দ্বারা সরবরাহ করা হয়, যা মরিচা-এ std::os মডিউলের একটি সাব-মডিউল।



এই মডিউলটি রাস্ট স্ট্যান্ডার্ড লাইব্রেরির অংশ এবং তাই আপনাকে কোনও বাহ্যিক ক্রেট বা নির্ভরতা ইনস্টল করার প্রয়োজন নেই।





আসুন কিছু মৌলিক API এবং অপারেশন কভার করি যা আমরা এই মডিউল থেকে একটি লিনাক্স সিস্টেমে করতে পারি।

এনভায়রনমেন্ট ভেরিয়েবল অ্যাক্সেস করা

আমরা std::env মডিউল ব্যবহার করে পরিবেশের ভেরিয়েবল অ্যাক্সেস করতে পারি। উদাহরণস্বরূপ, std::env::var('PATH') PATH এনভায়রনমেন্ট ভেরিয়েবলের মান পুনরুদ্ধার করে।



নিম্নলিখিত উদাহরণ প্রোগ্রাম বিবেচনা করুন:

std::env ব্যবহার করুন;
std::ffi::OsString ব্যবহার করুন;

fn হাত ( ) {
// একটি নির্দিষ্ট পরিবেশ পরিবর্তনশীল অ্যাক্সেস
যদি দিন ঠিক আছে ( মান ) = env::var ( 'WAYLAND_DISPLAY' ) {
println ! ( 'WAYLAND_DISPLAY={}' , মান ) ;
}

// সমস্ত পরিবেশ ভেরিয়েবলের উপর পুনরাবৃত্তি করুন
জন্য ( প্রকৃত মূল্য ) ভিতরে env::wars_us ( ) {
দিন key_string = key.to_string_lossy ( ) ;
দিন value_string = value.to_string_lossy ( ) ;
println ! ( '{}:{}' , কী_স্ট্রিং, মান_স্ট্রিং ) ;
}

// একটি নির্দিষ্ট পরিবেশ পরিবর্তনশীল অ্যাক্সেস হিসাবে একটি ` OsString `
যদি দিন কিছু ( মান ) = env::var_us ( 'হোস্টটাইপ' ) {
// রূপান্তর করুন ` OsString ` থেকে a ` স্ট্রিং ` যদি প্রয়োজন
যদি দিন কিছু ( value_str ) = value.to_str ( ) {
println ! ( 'হোস্টটাইপ={}' , 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
হোস্টটাইপ =x86_64

OS মডিউল ব্যবহার করে FS অপারেশন

আপনি অনুমান করতে পারেন, OS মডিউল ফাইল সিস্টেম-সম্পর্কিত ক্রিয়াকলাপগুলি সম্পাদন করার জন্য বিভিন্ন ফাংশন এবং পদ্ধতি প্রদান করে।

নিম্নলিখিত প্রোগ্রামটি নিন যা লিনাক্সে std::os মডিউল ব্যবহার করে আমরা যে বিভিন্ন অপারেশন করতে পারি তা প্রদর্শন করে:

std::fs ব্যবহার করুন;

fn হাত ( ) {
// পড়া একটি ফাইল
যদি দিন ঠিক আছে ( বিষয়বস্তু ) = fs::read_to_string ( '/home/debian/.bashrc' ) {
println ! ( '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 মডিউল সিস্টেমে প্রক্রিয়াগুলির সাথে কাজ করার জন্য সাবমডিউল এবং বৈশিষ্ট্যগুলি সরবরাহ করে।

নিম্নলিখিত উদাহরণ কোড নিন:

std::process: ব্যবহার করুন: { আদেশ, প্রস্থান } ;

fn হাত ( ) {
// চালান ls আদেশ
দিন আউটপুট = কমান্ড::নতুন ( 'লস' )
.arg ( '-দ্য' )
.আউটপুট ( )
.প্রত্যাশিত ( 'কমান্ড কার্যকর করতে ব্যর্থ হয়েছে' ) ;

যদি output.status.success ( ) {
দিন stdout = স্ট্রিং::from_utf8_lossy ( এবং output.stdout ) ;
println ! ( 'কমান্ড আউটপুট: \n {}' , stdout ) ;
} অন্য {
দিন stderr = স্ট্রিং::from_utf8_lossy ( এবং output.stderr ) ;
eprintln ! ( 'কমান্ড ব্যর্থ হয়েছে: \n {}' , stderr ) ;
প্রস্থান ( 1 ) ;
}
}


প্রদত্ত উদাহরণে, আমরা প্রয়োজনীয় মডিউল আমদানি করে শুরু করি। এই ক্ষেত্রে, আমাদের std::process submodule থেকে 'command' এবং 'exit' পদ্ধতির প্রয়োজন।

তারপর আমরা 'ls' কমান্ড চালানোর জন্য Command::new() ফাংশন ব্যবহার করি এবং কমান্ডে আর্গুমেন্ট পাঠাই।

সফল হলে, কমান্ডটি বর্তমান কার্যকারী ডিরেক্টরির জন্য নিম্নরূপ ডিরেক্টরি তালিকা প্রদান করবে:

উপসংহার

লিনাক্স এবং ইউনিক্স-এর মতো সিস্টেমে একাধিক ক্রিয়াকলাপ সম্পাদন করতে std::os মডিউল এবং সাবমডিউল দ্বারা সরবরাহ করা বিভিন্ন ফাংশন এবং পদ্ধতিগুলি কীভাবে ব্যবহার করা যায় তা আমরা অনুসন্ধান করেছি। মনে রাখবেন যে std::os মডিউল হল একটি বিস্তৃত মডিউল যাতে এই টিউটোরিয়ালে প্রদর্শিত বৈশিষ্ট্যগুলির চেয়ে আরও বিস্তৃত বৈশিষ্ট্যের সংগ্রহ রয়েছে।