Rust Std::OS u Linuxu

Rust Std Os U Linuxu



U Rustu modul std::os pruža apstrakciju nad funkcionalnošću operativnog sustava. Omogućuje nam interakciju s temeljnim operativnim sustavom za rad s varijablama okruženja, operacijama datotečnog sustava, upravljanjem procesima i više.

U ovom primjeru ćemo pokriti neke temeljne operacije koje možete izvesti na Unixu koristeći Rust std::os modul.







Dobro je upamtiti da je ovo opsežan modul i da sadrži mnoge vrste i funkcije za razne operacije povezane s Unixom. Stoga, razmotrite dokumentaciju kao referencu o odgovarajućim procesima.



Rust OS u Linuxu

U Linuxu možemo pristupiti funkcijama i tipovima specifičnim za Unix koje pruža std::os::unix modul, podmodul std::os modula u Rustu.



Ovaj modul je dio standardne biblioteke Rust i stoga ne zahtijeva da instalirate nikakav vanjski sanduk ili ovisnosti.





Pokrijmo neke osnovne API-je i operacije koje možemo izvesti na Linux sustavu iz ovog modula.

Pristup varijablama okruženja

Možemo pristupiti varijablama okoline pomoću modula std::env. Na primjer, std::env::var(“PATH”) dohvaća vrijednost varijable okruženja PATH.



Razmotrite sljedeći primjer programa:

koristiti std::env;
koristiti std::ffi::OsString;

fn ruka ( ) {
// Pristup određenoj varijabli okoline
ako neka U redu ( vrijednost ) = env::var ( 'WAYLAND_DISPLAY' ) {
println ! ( 'WAYLAND_DISPLAY={}' , vrijednost ) ;
}

// Iteracija po svim varijablama okruženja
za ( ključ, vrijednost ) u env::wars_us ( ) {
neka key_string = key.to_string_lossy ( ) ;
neka value_string = value.to_string_lossy ( ) ;
println ! ( '{}:{}' , niz_ključeva, niz_vrijednosti ) ;
}

// Pristup određenoj varijabli okoline kao an ` OsString `
ako neka Neki ( vrijednost ) = env::var_us ( 'HOSTTYPE' ) {
// Pretvoriti ` OsString ` do a ` Niz ` ako potrebna
ako neka Neki ( vrijednost_str ) = vrijednost.to_str ( ) {
println ! ( 'HOSTTYPE={}' , vrijednost_str ) ;
}
}
}


U navedenom primjeru započinjemo s uvozom potrebnih modula. U ovom slučaju, zanimaju nas std::env i std::ff::OsString.

Za pristup određenoj varijabli okoline možemo koristiti funkciju env::var i proslijediti naziv vrijednosti koju želimo dohvatiti. U ovom slučaju dobivamo vrijednost varijable WAYLAND_DISPLAY.

Funkcija vraća vrijednost varijable kao vrstu rezultata.

Također možemo iterirati po svim varijablama okoline pomoću funkcije env::vars_os. Ovo vraća iterator s parovima ključ-vrijednost varijabli okruženja. Dobro je napomenuti da se vrijednosti vraćaju kao OsString tip. Zatim ih možemo pretvoriti u vrijednosti niza pomoću funkcije to_string_lossy.

Također možemo pristupiti određenim varijablama okoline pomoću funkcije env::var_os. Ovo bi trebalo vratiti tip koji možemo pretvoriti u niz pomoću funkcije to_str().

Rezultirajući izlaz je sljedeći:

WAYLAND_DISPLAY =wayland- 0
HOSTTYPE =x86_64

FS operacije korištenjem OS modula

Kao što možete pogoditi, OS modul pruža razne funkcije i metode za izvođenje operacija povezanih s datotečnim sustavom.

Uzmimo sljedeći program koji demonstrira različite operacije koje možemo izvesti koristeći std::os modul u Linuxu:

koristiti std::fs;

fn ruka ( ) {
// Čitati datoteka
ako neka U redu ( sadržaj ) = fs::read_to_string ( '/home/debian/.bashrc' ) {
println ! ( 'bashrc: {}' , sadržaj ) ;
}

// Napravite novi direktorij
ako neka Err ( pogriješiti ) = fs::create_dir ( '/home/debian/novi_dir' ) {
eprintln ! ( 'Nije uspjelo stvaranje imenika: {}' , pogriješiti ) ;
}

// Uklonite a datoteka
ako neka Err ( pogriješiti ) = fs::ukloni_datoteku ( '/home/debian/remove_me.txt' ) {
eprintln ! ( 'Uklanjanje datoteke nije uspjelo: {}' , pogriješiti ) ;
}
}


U navedenom primjeru demonstriramo kako možemo čitati sadržaj datoteke pomoću metode fs::read_to_string(). Metoda uzima stazu do ciljne datoteke i vraća sadržaj datoteke kao niz.

Također možemo stvoriti novi direktorij pomoću funkcije fs::create_dir() i prosljeđivanjem putanje do ciljnog direktorija kao parametra.

Konačno, možemo ukloniti određenu datoteku pomoću funkcije fs::remove_file() i proslijediti ciljnu datoteku kao parametar.

BILJEŠKA: Navedeni primjeri su neki osnovni primjeri o tome kako izvesti operacije datotečnog sustava na Linuxu koristeći std::fs modul. Rust pruža sveobuhvatnu zbirku metoda i funkcija koje su ovdje prikazane. Za više informacija pogledajte dokumentaciju.

Upravljanje procesima korištenjem OS modula

Kao što možete pogoditi, OS modul pruža podmodule i značajke za rad s procesima u sustavu.

Uzmite sljedeći primjer koda:

koristi std::process:: { Naredba, Izlaz } ;

fn ruka ( ) {
// pokrenuti ls naredba
neka izlaz = Naredba::novo ( 'ls' )
.arg ( '-the' )
.izlaz ( )
.očekivati ( 'Izvršenje naredbe nije uspjelo' ) ;

ako izlaz.status.uspjeh ( ) {
neka stdout = String::from_utf8_lossy ( i izlaz.stdout ) ;
println ! ( 'Izlaz naredbe: \n {}' , stdout ) ;
} drugo {
neka stderr = String::from_utf8_lossy ( i izlaz.stderr ) ;
eprintln ! ( 'Naredba nije uspjela: \n {}' , stderr ) ;
Izlaz ( 1 ) ;
}
}


U navedenom primjeru započinjemo s uvozom potrebnih modula. U ovom slučaju, potrebne su nam metode “command” i “exit” iz podmodula std::process.

Zatim koristimo funkciju Command::new() za pokretanje naredbe 'ls' i prosljeđivanje argumenata naredbi.

Ako je uspješna, naredba bi trebala vratiti popis direktorija za trenutni radni direktorij kako slijedi:

Zaključak

Istražili smo kako koristiti različite funkcije i metode koje nudi std::os modul i podmoduli za izvođenje višestrukih operacija u sustavima sličnim Linuxu i Unixu. Zapamtite da je modul std::os opsežan modul koji sadrži širu kolekciju značajki od onih koje su prikazane u ovom vodiču.