Rust Std::OS Linuxissa

Rust Std Os Linuxissa



Rustissa std::os-moduuli tarjoaa abstraktion käyttöjärjestelmän toiminnoista. Sen avulla voimme olla vuorovaikutuksessa taustalla olevan käyttöjärjestelmän kanssa ympäristömuuttujien, tiedostojärjestelmän toimintojen, prosessinhallinnan ja muiden kanssa.

Tässä esimerkissä käsittelemme joitakin perustoimintoja, jotka voit suorittaa Unixissa Rust std::os -moduulin avulla.







On hyvä muistaa, että tämä on laaja moduuli ja sisältää monia tyyppejä ja toimintoja erilaisiin Unix-toimintoihin. Siksi ota huomioon vastaavien prosessien dokumentaatio.



Rust OS Linuxissa

Linuxissa voimme käyttää Unix-kohtaisia ​​toimintoja ja tyyppejä, joita tarjoaa std::os::unix-moduuli, joka on Rustin std::os-moduulin alimoduuli.



Tämä moduuli on osa Rust-standardikirjastoa, joten se ei vaadi ulkoisen laatikon tai riippuvuuksien asentamista.





Käydään läpi joitakin perusrajapintoja ja toimintoja, joita voimme suorittaa Linux-järjestelmässä tästä moduulista.

Ympäristömuuttujien käyttö

Voimme käyttää ympäristömuuttujia std::env-moduulin avulla. Esimerkiksi std::env::var('PATH') hakee PATH-ympäristömuuttujan arvon.



Harkitse seuraavaa esimerkkiohjelmaa:

käytä std::env;
käytä std::ffi::OsString;

fn käsi ( ) {
// Käytä tiettyä ympäristömuuttujaa
jos antaa Ok ( arvo ) = env::var ( 'WAYLAND_DISPLAY' ) {
println ! ( 'WAYLAND_DISPLAY={}' , arvo ) ;
}

// Toista kaikki ympäristömuuttujat
varten ( avain, arvo ) sisään env::wars_us ( ) {
antaa key_string = key.to_string_lossy ( ) ;
antaa arvo_merkkijono = value.to_string_lossy ( ) ;
println ! ( '{}:{}' , avainmerkkijono, arvomerkkijono ) ;
}

// Käytä tiettyä ympäristömuuttujaa kuten an ` OsString `
jos antaa Jonkin verran ( arvo ) = env::var_us ( 'HOSTTYPE' ) {
// Muuntaa ` OsString ` kohtaan a ` merkkijono ` jos tarvittu
jos antaa Jonkin verran ( arvo_str ) = value.to_str ( ) {
println ! ( 'HOSTTYPE={}' , arvo_str ) ;
}
}
}


Esitetyssä esimerkissä aloitamme tuomalla tarvittavat moduulit. Tässä tapauksessa olemme kiinnostuneita std::env:stä ja std::ff::OsStringistä.

Tiettyyn ympäristömuuttujaan pääsemiseksi voimme käyttää env::var-funktiota ja välittää noudettavan arvon nimen. Tässä tapauksessa saamme WAYLAND_DISPLAY-muuttujan arvon.

Funktio palauttaa muuttujan arvon tulostyyppinä.

Voimme myös iteroida kaikkia ympäristömuuttujia käyttämällä env::vars_os-funktiota. Tämä palauttaa iteraattorin, jossa on ympäristömuuttujien avainarvoparit. On hyvä huomata, että arvot palautetaan OsString-tyyppinä. Voimme sitten muuntaa ne merkkijonoarvoiksi käyttämällä to_string_lossy-funktiota.

Voimme myös käyttää tiettyjä ympäristömuuttujia env::var_os-funktiolla. Tämän pitäisi palauttaa -tyyppi, jonka voimme muuntaa merkkijonoksi käyttämällä to_str()-funktiota.

Tuloksena oleva tulos on seuraava:

WAYLAND_DISPLAY =wayland- 0
HOSTTYPE =x86_64

FS-toiminnot käyttöjärjestelmämoduulin avulla

Kuten arvata saattaa, käyttöjärjestelmämoduuli tarjoaa erilaisia ​​toimintoja ja menetelmiä tiedostojärjestelmään liittyvien toimintojen suorittamiseen.

Ota seuraava ohjelma, joka esittelee erilaisia ​​​​toimintoja, joita voimme suorittaa käyttämällä std::os-moduulia Linuxissa:

käytä std::fs;

fn käsi ( ) {
// Lue a tiedosto
jos antaa Ok ( sisällys ) = fs::lue_merkkijonoon ( '/home/debian/.bashrc' ) {
println ! ( 'bashrc: {}' , sisältö ) ;
}

// Luo uusi hakemisto
jos antaa Err ( err ) = fs::luo_hakemisto ( '/home/debian/new_dir' ) {
eprintln ! ( 'Hakemiston luominen epäonnistui: {}' , err ) ;
}

// Poista a tiedosto
jos antaa Err ( err ) = fs::poista_tiedosto ( '/home/debian/remove_me.txt' ) {
eprintln ! ( 'Tiedoston {} poistaminen epäonnistui' , err ) ;
}
}


Esitetyssä esimerkissä näytämme, kuinka voimme lukea tiedoston sisällön fs::read_to_string() -menetelmällä. Menetelmä vie polun kohdetiedostoon ja palauttaa tiedoston sisällön merkkijonona.

Voimme myös luoda uuden hakemiston käyttämällä fs::create_dir()-funktiota ja välittämällä polun kohdehakemistoon parametrina.

Lopuksi voimme poistaa tietyn tiedoston käyttämällä fs::remove_file()-funktiota ja välittää kohdetiedoston parametrina.

HUOMAUTUS: Annetut esimerkit ovat joitain perusesimerkkejä tiedostojärjestelmän toimintojen suorittamisesta Linuxissa käyttämällä std::fs-moduulia. Rust tarjoaa kattavan kokoelman menetelmiä ja toimintoja, jotka on esitelty tässä. Katso dokumentaatiosta lisätietoja.

Prosessinhallinta käyttöjärjestelmämoduulin avulla

Kuten arvata saattaa, käyttöjärjestelmämoduuli tarjoaa alimoduuleja ja ominaisuuksia järjestelmän prosessien kanssa työskentelemiseen.

Ota seuraava esimerkkikoodi:

käytä std::prosessi:: { Komento, poistu } ;

fn käsi ( ) {
// ajaa ls komento
antaa lähtö = Komento::uusi ( 'ls' )
.arg ( '-the' )
.lähtö ( )
.odottaa ( 'Komennon suorittaminen epäonnistui' ) ;

jos output.status.success ( ) {
antaa stdout = Merkkijono::from_utf8_lossy ( & output.stdout ) ;
println ! ( 'Komentolähtö: \n {}' , stdout ) ;
} muu {
antaa stderr = Merkkijono::from_utf8_lossy ( & output.stderr ) ;
eprintln ! ( 'Komento epäonnistui: \n {}' , stderr ) ;
poistu ( 1 ) ;
}
}


Annetussa esimerkissä aloitamme tuomalla tarvittavat moduulit. Tässä tapauksessa tarvitsemme “command”- ja “exit”-menetelmät std::process-alimoduulista.

Käytämme sitten Command::new()-funktiota 'ls'-komennon suorittamiseen ja argumenttien välittämiseen komennolle.

Jos se onnistuu, komennon pitäisi palauttaa nykyisen työhakemiston hakemistolistaus seuraavasti:

Johtopäätös

Tutkimme, kuinka käyttää std::os-moduulin ja alimoduulien tarjoamia erilaisia ​​toimintoja ja menetelmiä useiden toimintojen suorittamiseen Linux- ja Unix-kaltaisissa järjestelmissä. Muista, että std::os-moduuli on laaja moduuli, joka sisältää laajemman kokoelman ominaisuuksia kuin tässä opetusohjelmassa esitellyt.