Linux'ta Rust Std::OS

Linux Ta Rust Std Os



Rust'ta std::os modülü, işletim sisteminin işlevselliği hakkında bir soyutlama sağlar. Ortam değişkenleri, dosya sistemi işlemleri, süreç yönetimi ve daha fazlasıyla çalışmak için temeldeki işletim sistemiyle etkileşime girmemizi sağlar.

Bu örnekte, Unix üzerinde Rust std::os modülünü kullanarak gerçekleştirebileceğiniz bazı temel işlemleri ele alacağız.







Bunun kapsamlı bir modül olduğunu ve Unix ile ilgili çeşitli işlemler için pek çok tür ve işlev içerdiğini hatırlamakta fayda var. Bu nedenle, ilgili süreçlerle ilgili referans için lütfen belgeleri dikkate alın.



Linux'ta Rust işletim sistemi

Linux'ta, Rust'taki std::os modülünün bir alt modülü olan std::os::unix modülü tarafından sağlanan Unix'e özgü işlevlere ve türlere erişebiliriz.



Bu modül, Rust standart kitaplığının bir parçasıdır ve dolayısıyla herhangi bir harici kasa veya bağımlılık kurmanızı gerektirmez.





Bu modülden bir Linux sisteminde gerçekleştirebileceğimiz bazı temel API ve işlemleri ele alalım.

Ortam Değişkenlerine Erişim

Ortam değişkenlerine std::env modülünü kullanarak erişebiliriz. Örneğin, std::env::var(“PATH”), PATH ortam değişkeninin değerini alır.



Aşağıdaki örnek programı göz önünde bulundurun:

std::env kullanın;
std::ffi::OsString'i kullanın;

fn el ( ) {
// Belirli bir ortam değişkenine erişin
eğer izin vermek Tamam ( değer ) = ortam::var ( 'WAYLAND_DISPLAY' ) {
yazdır ! ( 'WAYLAND_DISPLAY={}' , değer ) ;
}

// Tüm ortam değişkenlerini yineleyin
için ( anahtar, değer ) içinde çevre::wars_us ( ) {
izin vermek key_string = key.to_string_lossy ( ) ;
izin vermek value_string = value.to_string_lossy ( ) ;
yazdır ! ( '{}:{}' , anahtar_dizesi, değer_dizesi ) ;
}

// Belirli bir ortam değişkenine erişin gibi BİR ` OsDizesi `
eğer izin vermek Bazı ( değer ) = ortam::var_us ( 'HOST TÜRÜ' ) {
// Dönüştürmek ` OsDizesi ` bir ` Sicim ` eğer gerekli
eğer izin vermek Bazı ( değer_str ) = değer.to_str ( ) {
yazdır ! ( 'HOSTTİPİ={}' , değer_str ) ;
}
}
}


Verilen örnekte, gerekli modülleri içe aktararak başlıyoruz. Bu durumda std::env ve std::ff::OsString ile ilgileniyoruz.

Belirli bir ortam değişkenine erişmek için env::var işlevini kullanabilir ve getirmek istediğimiz değerin adını iletebiliriz. Bu durumda WAYLAND_DISPLAY değişkeninin değerini alıyoruz.

İşlev, değişkenin değerini bir sonuç türü olarak döndürür.

Ayrıca env::vars_os işlevini kullanarak tüm ortam değişkenlerini yineleyebiliriz. Bu, ortam değişkenlerinin anahtar/değer çiftlerini içeren bir yineleyici döndürür. Değerlerin bir OsString türü olarak döndürüldüğünü not etmek iyidir. Daha sonra to_string_lossy işlevini kullanarak bunları dize değerlerine dönüştürebiliriz.

Env::var_os işlevini kullanarak belirli ortam değişkenlerine de erişebiliriz. Bu, to_str() işlevini kullanarak bir dizeye dönüştürebileceğimiz bir türü döndürmelidir.

Ortaya çıkan çıktı aşağıdaki gibidir:

WAYLAND_DISPLAY =wayland- 0
HOST TÜRÜ =x86_64

İşletim Sistemi Modülünü Kullanan FS İşlemleri

Tahmin edebileceğiniz gibi, OS modülü, dosya sistemiyle ilgili işlemleri gerçekleştirmek için çeşitli işlevler ve yöntemler sağlar.

Linux'ta std::os modülünü kullanarak gerçekleştirebileceğimiz çeşitli işlemleri gösteren aşağıdaki programı ele alalım:

std::fs'yi kullanın;

fn el ( ) {
// Oku dosya
eğer izin vermek Tamam ( içindekiler ) = fs::read_to_string ( '/home/debian/.bashrc' ) {
yazdır ! ( 'bashrc: {}' , içindekiler ) ;
}

// Yeni bir dizin oluştur
eğer izin vermek hata ( hata ) = fs::create_dir ( '/home/debian/new_dir' ) {
eprintln ! ( 'Dizin oluşturulamadı: {}' , hata ) ;
}

// Kaldır dosya
eğer izin vermek hata ( hata ) = fs::dosyayı kaldır ( '/home/debian/remove_me.txt' ) {
eprintln ! ( 'Dosya kaldırılamadı: {}' , hata ) ;
}
}


Verilen örnekte, fs::read_to_string() yöntemini kullanarak bir dosyanın içeriğini nasıl okuyabileceğimizi gösteriyoruz. Yöntem, hedef dosyanın yolunu alır ve dosya içeriğini bir dize olarak döndürür.

Ayrıca fs::create_dir() işlevini kullanarak ve hedef dizine giden yolu parametre olarak ileterek yeni bir dizin oluşturabiliriz.

Son olarak, fs::remove_file() işlevini kullanarak belirli bir dosyayı kaldırabilir ve hedef dosyayı parametre olarak iletebiliriz.

NOT: Sağlanan örnekler, std::fs modülünü kullanarak Linux'ta dosya sistemi işlemlerinin nasıl gerçekleştirileceğine ilişkin bazı temel örneklerdir. Rust, burada gösterilen kapsamlı bir yöntem ve işlev koleksiyonu sağlar. Daha fazla bilgi edinmek için belgelere bakın.

OS Modülünü Kullanarak Süreç Yönetimi

Tahmin edebileceğiniz gibi OS modülü, sistemdeki süreçlerle çalışmak için alt modüller ve özellikler sağlar.

Aşağıdaki örnek kodu alın:

std::process:: kullanın { Emretmek, çıkış } ;

fn el ( ) {
// çalıştırmak ls emretmek
izin vermek çıktı = Komut::yeni ( 'ls' )
.arg ( '-' )
.çıktı ( )
.beklemek ( 'Komut yürütülemedi' ) ;

eğer çıktı.durum.başarı ( ) {
izin vermek stdout = Dize::from_utf8_lossy ( & çıktı.stdout ) ;
yazdır ! ( 'Komut çıkışı: \N {}' , stdout ) ;
} başka {
izin vermek stderr = Dize::from_utf8_lossy ( & çıktı.stderr ) ;
eprintln ! ( 'Komut başarısız oldu: \N {}' , stderr ) ;
çıkış ( 1 ) ;
}
}


Verilen örnekte, gerekli modülleri içe aktararak başlıyoruz. Bu durumda std::process alt modülünden “command” ve “exit” metodlarına ihtiyacımız var.

Daha sonra 'ls' komutunu çalıştırmak ve argümanları komuta iletmek için Command::new() işlevini kullanırız.

Başarılı olursa, komut geçerli çalışma dizini için dizin listesini aşağıdaki gibi döndürmelidir:

Çözüm

Linux ve Unix benzeri sistemlerde birden çok işlemi gerçekleştirmek için std::os modülü ve alt modülleri tarafından sağlanan çeşitli işlev ve yöntemlerin nasıl kullanılacağını araştırdık. std::os modülünün, bu eğitimde gösterilenlerden daha geniş bir özellik koleksiyonu içeren kapsamlı bir modül olduğunu unutmayın.