Rust Std::OS v Linuxu

Rust Std Os V Linuxu



V Rustu modul std::os zagotavlja abstrakcijo nad funkcionalnostjo operacijskega sistema. Omogoča nam interakcijo z osnovnim operacijskim sistemom za delo s spremenljivkami okolja, operacijami datotečnega sistema, upravljanjem procesov in več.

V tem primeru bomo obravnavali nekatere temeljne operacije, ki jih lahko izvajate v sistemu Unix z uporabo modula Rust std::os.







Dobro si je zapomniti, da je to obsežen modul in vsebuje veliko vrst in funkcij za različne operacije, povezane z Unixom. Zato upoštevajte dokumentacijo za referenco o ustreznih procesih.



Rust OS v Linuxu

V Linuxu lahko dostopamo do funkcij in vrst, specifičnih za Unix, ki jih zagotavlja modul std::os::unix, podmodul modula std::os v Rustu.



Ta modul je del standardne knjižnice Rust in zato ne zahteva namestitve zunanjega zaboja ali odvisnosti.





Oglejmo si nekaj osnovnih API-jev in operacij, ki jih lahko izvedemo v sistemu Linux s tem modulom.

Dostop do spremenljivk okolja

Do spremenljivk okolja lahko dostopamo z uporabo modula std::env. Na primer, std::env::var(“PATH”) pridobi vrednost spremenljivke okolja PATH.



Razmislite o naslednjem primeru programa:

uporabite std::env;
uporabite std::ffi::OsString;

fn roko ( ) {
// Dostop do določene spremenljivke okolja
če pustiti V redu ( vrednost ) = env::var ( 'WAYLAND_DISPLAY' ) {
println ! ( 'WAYLAND_DISPLAY={}' , vrednost ) ;
}

// Ponovite vse spremenljivke okolja
za ( ključ, vrednost ) v env::wars_us ( ) {
pustiti key_string = key.to_string_lossy ( ) ;
pustiti value_string = value.to_string_lossy ( ) ;
println ! ( '{}:{}' , niz_ključev, niz_vrednosti ) ;
}

// Dostop do določene spremenljivke okolja kot an ` OsString `
če pustiti nekaj ( vrednost ) = env::var_us ( 'HOSTTYPE' ) {
// Pretvorba ` OsString ` do a ` Vrvica ` če potrebno
če pustiti nekaj ( value_str ) = value.to_str ( ) {
println ! ( 'HOSTTYPE={}' , value_str ) ;
}
}
}


V danem primeru začnemo z uvozom potrebnih modulov. V tem primeru nas zanimata std::env in std::ff::OsString.

Za dostop do določene spremenljivke okolja lahko uporabimo funkcijo env::var in posredujemo ime vrednosti, ki jo želimo pridobiti. V tem primeru dobimo vrednost spremenljivke WAYLAND_DISPLAY.

Funkcija vrne vrednost spremenljivke kot vrsto rezultata.

Prav tako lahko ponovimo vse spremenljivke okolja s funkcijo env::vars_os. To vrne iterator s pari ključ-vrednost spremenljivk okolja. Dobro je omeniti, da so vrednosti vrnjene kot vrsta OsString. Nato jih lahko pretvorimo v vrednosti nizov s funkcijo to_string_lossy.

Do določenih spremenljivk okolja lahko dostopamo tudi s funkcijo env::var_os. To bi moralo vrniti tip , ki ga lahko pretvorimo v niz s funkcijo to_str().

Rezultat je naslednji:

WAYLAND_DISPLAY =wayland- 0
HOSTTYPE =x86_64

Operacije FS z uporabo modula OS

Kot lahko ugibate, modul OS ponuja različne funkcije in metode za izvajanje operacij, povezanih z datotečnim sistemom.

Vzemite naslednji program, ki prikazuje različne operacije, ki jih lahko izvedemo z uporabo modula std::os v Linuxu:

uporabite std::fs;

fn roko ( ) {
// Preberi a mapa
če pustiti V redu ( vsebine ) = fs::read_to_string ( '/home/debian/.bashrc' ) {
println ! ( 'bashrc: {}' , vsebina ) ;
}

// Ustvari nov imenik
če pustiti Err ( napaka ) = fs::create_dir ( '/home/debian/new_dir' ) {
eprintln ! ( 'Ni uspelo ustvariti imenika: {}' , napaka ) ;
}

// Odstranite a mapa
če pustiti Err ( napaka ) = fs::remove_file ( '/home/debian/remove_me.txt' ) {
eprintln ! ( 'Datoteke ni bilo mogoče odstraniti: {}' , napaka ) ;
}
}


V danem primeru prikazujemo, kako lahko preberemo vsebino datoteke z uporabo metode fs::read_to_string(). Metoda prevzame pot do ciljne datoteke in vrne vsebino datoteke kot niz.

Prav tako lahko ustvarimo nov imenik s funkcijo fs::create_dir() in podajanjem poti do ciljnega imenika kot parametra.

Končno lahko odstranimo določeno datoteko s funkcijo fs::remove_file() in posredujemo ciljno datoteko kot parameter.

OPOMBA: Predloženi primeri so nekateri osnovni primeri o tem, kako izvajati operacije datotečnega sistema v Linuxu z uporabo modula std::fs. Rust ponuja obsežno zbirko metod in funkcij, ki so prikazane tukaj. Če želite izvedeti več, glejte dokumentacijo.

Upravljanje procesov z uporabo modula OS

Kot lahko ugibate, modul OS ponuja podmodule in funkcije za delo s procesi v sistemu.

Vzemite naslednji primer kode:

uporabi std::process:: { ukaz, izhod } ;

fn roko ( ) {
// zaženite ls ukaz
pustiti izhod = Command::new ( 'ls' )
.arg ( '-the' )
.izhod ( )
.pričakovati ( 'Ukaza ni bilo mogoče izvesti' ) ;

če izhod.stanje.uspeh ( ) {
pustiti stdout = String::from_utf8_lossy ( & izhod.stdout ) ;
println ! ( 'Izhod ukaza: \n {}' , stdout ) ;
} drugače {
pustiti stderr = String::from_utf8_lossy ( & izhod.stderr ) ;
eprintln ! ( 'Ukaz ni uspel: \n {}' , stderr ) ;
izhod ( 1 ) ;
}
}


V danem primeru začnemo z uvozom zahtevanih modulov. V tem primeru potrebujemo metodi 'ukaz' in 'izhod' iz podmodula std::process.

Nato uporabimo funkcijo Command::new() za zagon ukaza 'ls' in posredovanje argumentov ukazu.

Če je uspešen, mora ukaz vrniti seznam imenikov za trenutni delovni imenik, kot sledi:

Zaključek

Raziskali smo, kako uporabiti različne funkcije in metode, ki jih zagotavljajo modul in podmoduli std::os, za izvajanje več operacij v sistemih, podobnih Linuxu in Unixu. Ne pozabite, da je modul std::os obsežen modul, ki vsebuje širšo zbirko funkcij od tistih, ki so prikazane v tej vadnici.