Rust Std::OS v systéme Linux

Rust Std Os V Systeme Linux



V Ruste poskytuje modul std::os abstrakciu funkčnosti operačného systému. Umožňuje nám interagovať so základným operačným systémom a pracovať s premennými prostredia, operáciami súborového systému, správou procesov a ďalšími.

V tomto príklade pokryjeme niektoré základné operácie, ktoré môžete vykonávať na Unixe pomocou modulu Rust std::os.







Je dobré si uvedomiť, že ide o rozsiahly modul a obsahuje množstvo typov a funkcií pre rôzne operácie súvisiace s Unixom. Zvážte preto dokumentáciu ako referenciu o príslušných procesoch.



Rust OS v Linuxe

V Linuxe máme prístup k funkciám a typom špecifickým pre Unix, ktoré poskytuje modul std::os::unix, podmodul modulu std::os v Ruste.



Tento modul je súčasťou štandardnej knižnice Rust, a preto nevyžaduje inštaláciu žiadnej externej prepravky alebo závislostí.





Pozrime sa na niektoré základné API a operácie, ktoré môžeme vykonávať na systéme Linux z tohto modulu.

Prístup k premenným prostredia

K premenným prostredia môžeme pristupovať pomocou modulu std::env. Napríklad std::env::var(“PATH”) získa hodnotu premennej prostredia PATH.



Zvážte nasledujúci príklad programu:

použite std::env;
použite std::ffi::OsString;

fn ruka ( ) {
// Prístup k špecifickej premennej prostredia
ak nech Dobre ( hodnotu ) = env::var ( „WAYLAND_DISPLAY“ ) {
println ! ( 'WAYLAND_DISPLAY={}' , hodnota ) ;
}

// Iterujte všetky premenné prostredia
pre ( kľúč, hodnota ) v env::wars_us ( ) {
nech key_string = key.to_string_lossy ( ) ;
nech value_string = value.to_string_lossy ( ) ;
println ! ( '{}:{}' , kľúčový_reťazec, hodnotový_reťazec ) ;
}

// Prístup k špecifickej premennej prostredia ako an ` OsString `
ak nech Niektorí ( hodnotu ) = env::var_us ( 'HOSTTYPE' ) {
// Konvertovať ` OsString ` do a ` Reťazec ` ak potrebné
ak nech Niektorí ( hodnota_str ) = hodnota.k_str ( ) {
println ! ( 'HOSTTYPE={}' , hodnota_str ) ;
}
}
}


V uvedenom príklade začneme importovaním potrebných modulov. V tomto prípade nás zaujímajú std::env a std::ff::OsString.

Na prístup ku konkrétnej premennej prostredia môžeme použiť funkciu env::var a odovzdať názov hodnoty, ktorú chceme získať. V tomto prípade dostaneme hodnotu premennej WAYLAND_DISPLAY.

Funkcia vráti hodnotu premennej ako typ výsledku.

Môžeme tiež iterovať všetky premenné prostredia pomocou funkcie env::vars_os. Toto vráti iterátor s pármi kľúč – hodnota premenných prostredia. Je dobré poznamenať, že hodnoty sú vrátené ako typ OsString. Potom ich môžeme previesť na hodnoty reťazca pomocou funkcie to_string_lossy.

K špecifickým premenným prostredia môžeme pristupovať aj pomocou funkcie env::var_os. Toto by malo vrátiť typ , ktorý môžeme previesť na reťazec pomocou funkcie to_str().

Výsledný výstup je nasledovný:

WAYLAND_DISPLAY =wayland- 0
HOSTTYPE =x86_64

Operácie FS pomocou modulu OS

Ako môžete hádať, modul OS poskytuje rôzne funkcie a metódy na vykonávanie operácií súvisiacich so súborovým systémom.

Vezmite si nasledujúci program, ktorý demonštruje rôzne operácie, ktoré môžeme vykonávať pomocou modulu std::os v systéme Linux:

použite std::fs;

fn ruka ( ) {
// Prečítaj súbor
ak nech Dobre ( obsahu ) = fs::read_to_string ( '/home/debian/.bashrc' ) {
println ! ( 'bashrc: {}' , obsah ) ;
}

// Vytvorte nový adresár
ak nech Err ( chybovať ) = fs::create_dir ( '/home/debian/new_dir' ) {
eprintln ! ( 'Nepodarilo sa vytvoriť adresár: {}' , chyba ) ;
}

// Odstráňte a súbor
ak nech Err ( chybovať ) = fs::remove_file ( '/home/debian/remove_me.txt' ) {
eprintln ! ( 'Nepodarilo sa odstrániť súbor: {}' , chyba ) ;
}
}


V uvedenom príklade demonštrujeme, ako môžeme čítať obsah súboru pomocou metódy fs::read_to_string(). Metóda vezme cestu k cieľovému súboru a vráti obsah súboru ako reťazec.

Môžeme tiež vytvoriť nový adresár pomocou funkcie fs::create_dir() a odovzdaním cesty do cieľového adresára ako parametra.

Nakoniec môžeme odstrániť konkrétny súbor pomocou funkcie fs::remove_file() a odovzdať cieľový súbor ako parameter.

POZNÁMKA: Uvedené príklady predstavujú niekoľko základných príkladov, ako vykonávať operácie súborového systému v systéme Linux pomocou modulu std::fs. Rust poskytuje komplexnú zbierku metód a funkcií, ktoré sú tu demonštrované. Viac informácií nájdete v dokumentácii.

Riadenie procesov pomocou modulu OS

Ako môžete hádať, modul OS poskytuje podmoduly a funkcie na prácu s procesmi v systéme.

Vezmite si nasledujúci príklad kódu:

použite std::process:: { príkaz, VÝCHOD } ;

fn ruka ( ) {
// spustiť ls príkaz
nech output = Command::new ( 'ls' )
.arg ( '-the' )
.výkon ( )
.očakávať ( 'Nepodarilo sa vykonať príkaz' ) ;

ak výstup.stav.úspech ( ) {
nech stdout = Reťazec::from_utf8_lossy ( & výstup.stdout ) ;
println ! ( 'Výstup príkazu: \n {} , stdout ) ;
} inak {
nech stderr = Reťazec::from_utf8_lossy ( & výstup.stderr ) ;
eprintln ! ( 'Príkaz zlyhal: \n {} , stderr ) ;
VÝCHOD ( 1 ) ;
}
}


V uvedenom príklade začneme importovaním požadovaných modulov. V tomto prípade potrebujeme metódy „príkaz“ a „výstup“ zo submodulu std::process.

Potom použijeme funkciu Command::new() na spustenie príkazu „ls“ a odovzdanie argumentov príkazu.

Ak bude úspešný, príkaz by mal vrátiť zoznam adresára pre aktuálny pracovný adresár takto:

Záver

Preskúmali sme, ako používať rôzne funkcie a metódy, ktoré poskytuje modul std::os a podmoduly na vykonávanie viacerých operácií v systémoch Linux a Unix. Pamätajte, že modul std::os je rozsiahly modul, ktorý obsahuje širšiu zbierku funkcií, než aké sú uvedené v tomto návode.