Rust Std::OS Linuxis

Rust Std Os Linuxis



Rustis pakub moodul std::os operatsioonisüsteemi funktsioonide abstraktsiooni. See võimaldab meil suhelda aluseks oleva operatsioonisüsteemiga, et töötada keskkonnamuutujate, failisüsteemi toimingute, protsessihalduse ja muuga.

Selles näites käsitleme mõningaid põhitoiminguid, mida saate teha Unixis, kasutades moodulit Rust std::os.







Hea on meeles pidada, et tegemist on ulatusliku mooduliga ning sisaldab palju tüüpe ja funktsioone erinevate Unixiga seotud toimingute jaoks. Seetõttu tutvuge vastavate protsesside viitamiseks dokumentatsiooniga.



Rust OS Linuxis

Linuxis pääseme juurde Unixi spetsiifilistele funktsioonidele ja tüüpidele, mida pakub std::os::unixi moodul, mis on Rusti mooduli std::os alammoodul.



See moodul on osa Rusti standardteegist ja seetõttu ei nõua teilt välise kasti ega sõltuvuste installimist.





Käsitleme mõnda põhilist API-t ja toiminguid, mida saame Linuxi süsteemis sellest moodulist läbi viia.

Juurdepääs keskkonnamuutujatele

Keskkonnamuutujatele pääseme juurde std::env mooduli abil. Näiteks std::env::var(“PATH”) hangib PATH keskkonnamuutuja väärtuse.



Mõelge järgmisele näidisprogrammile:

kasuta std::env;
kasuta std::ffi::OsString;

fn käsi ( ) {
// Juurdepääs konkreetsele keskkonnamuutujale
kui lase Okei ( väärtus ) = env::var ( 'WAYLAND_DISPLAY' ) {
println ! ( 'WAYLAND_DISPLAY={}' , väärtus ) ;
}

// Korrake kõiki keskkonnamuutujaid
jaoks ( võti, väärtus ) sisse env::sõjad_us ( ) {
lase key_string = key.to_string_lossy ( ) ;
lase väärtusstring = väärtus.stringi_kadu ( ) ;
println ! ( '{}:{}' , võtmestring, väärtuse_string ) ;
}

// Juurdepääs konkreetsele keskkonnamuutujale nagu an ` OsString `
kui lase Mõned ( väärtus ) = env::var_us ( 'HOSTTYPE' ) {
// Teisenda ` OsString ` kuni a ` String ` kui vaja
kui lase Mõned ( väärtus_str ) = väärtus.to_str ( ) {
println ! ( 'HOSTTYPE={}' , väärtus_str ) ;
}
}
}


Toodud näites alustame vajalike moodulite importimisest. Sel juhul huvitab meid std::env ja std::ff::OsString.

Konkreetsele keskkonnamuutujale juurdepääsuks saame kasutada funktsiooni env::var ja edastada selle väärtuse nime, mida soovime tuua. Sel juhul saame muutuja WAYLAND_DISPLAY väärtuse.

Funktsioon tagastab muutuja väärtuse tulemuse tüübina.

Samuti saame itereerida kõiki keskkonnamuutujaid, kasutades funktsiooni env::vars_os. See tagastab iteraatori keskkonnamuutujate võtme-väärtuste paaridega. Hea on märkida, et väärtused tagastatakse OsString tüübina. Seejärel saame need teisendada stringiväärtusteks, kasutades funktsiooni to_string_lossy.

Konkreetsetele keskkonnamuutujatele pääseme juurde ka funktsiooni env::var_os abil. See peaks tagastama tüübi , mille saame teisendada stringiks funktsiooni to_str() abil.

Saadud väljund on järgmine:

WAYLAND_DISPLAY =teemaa- 0
HOSTTYPE =x86_64

FS-i toimingud OS-mooduli abil

Nagu võite arvata, pakub OS-i moodul erinevaid funktsioone ja meetodeid failisüsteemiga seotud toimingute tegemiseks.

Võtke järgmine programm, mis näitab erinevaid toiminguid, mida saame Linuxis std::os mooduli abil teha:

kasuta std::fs;

fn käsi ( ) {
// Loe faili
kui lase Okei ( sisu ) = fs::loe_stringiks ( '/home/debian/.bashrc' ) {
println ! ( 'bashrc: {}' , sisu ) ;
}

// Looge uus kataloog
kui lase Err ( eks ) = fs::loo_kataloog ( '/home/debian/new_dir' ) {
eprintln ! ( 'Kataloogi loomine ebaõnnestus: {}' , eks ) ;
}

// Eemalda a faili
kui lase Err ( eks ) = fs::eemalda_fail ( '/home/debian/remove_me.txt' ) {
eprintln ! ( 'Faili: {} eemaldamine ebaõnnestus' , eks ) ;
}
}


Antud näites demonstreerime, kuidas saame lugeda faili sisu, kasutades meetodit fs::read_to_string(). Meetod valib sihtfaili tee ja tagastab faili sisu stringina.

Samuti saame luua uue kataloogi, kasutades funktsiooni fs::create_dir() ja edastades parameetrina tee sihtkataloogi.

Lõpuks saame eemaldada konkreetse faili, kasutades funktsiooni fs::remove_file() ja edastada sihtfail parameetrina.

MÄRGE: Esitatud näited on mõned põhinäited selle kohta, kuidas teha Linuxis failisüsteemi toiminguid std::fs mooduli abil. Rust pakub laiaulatuslikku meetodite ja funktsioonide kogumit, mida siin näidatakse. Lisateabe saamiseks vaadake dokumentatsiooni.

Protsessihaldus OS-mooduli abil

Nagu võite arvata, pakub OS-moodul alammooduleid ja funktsioone süsteemi protsessidega töötamiseks.

Võtke järgmine näidiskood:

kasuta std::protsess:: { käsk, väljuda } ;

fn käsi ( ) {
// käivitada ls käsk
lase väljund = Käsk::uus ( 'ls' )
.arg ( '-the' )
.väljund ( )
.oodata ( 'Käsu täitmine nurjus' ) ;

kui väljund.olek.edu ( ) {
lase stdout = String::from_utf8_lossy ( & väljund.stdout ) ;
println ! ( 'Käsu väljund: \n {}' , stdout ) ;
} muidu {
lase stderr = String::from_utf8_lossy ( & väljund.stderr ) ;
eprintln ! ( 'Käsk ebaõnnestus: \n {}' , stderr ) ;
väljuda ( 1 ) ;
}
}


Antud näites alustame vajalike moodulite importimisest. Sel juhul vajame alammooduli std::process meetodeid 'käsk' ja 'väljumine'.

Seejärel kasutame funktsiooni Command::new(), et käivitada käsk 'ls' ja edastada käsule argumendid.

Edu korral peaks käsk tagastama praeguse töökataloogi kataloogiloendi järgmiselt:

Järeldus

Uurisime, kuidas kasutada erinevaid funktsioone ja meetodeid, mida pakuvad std::os moodul ja alammoodulid, et teha Linuxi ja Unixi sarnastes süsteemides mitmeid toiminguid. Pidage meeles, et std::os moodul on ulatuslik moodul, mis sisaldab laiemat funktsioonide kogumit kui need, mida selles õpetuses näidatakse.