Руст Стд::ОС у Линуку

Rust Std Os U Linuku



У Русту, стд::ос модул пружа апстракцију над функционалношћу оперативног система. Омогућава нам интеракцију са основним оперативним системом ради рада са варијаблама окружења, операцијама система датотека, управљањем процесима и још много тога.

У овом примеру ћемо покрити неке основне операције које можете да изведете на Уник-у користећи Руст стд::ос модул.







Добро је запамтити да је ово обиман модул и да садржи много типова и функција за различите операције повезане са Уник-ом. Стога, размотрите документацију за референцу о одговарајућим процесима.



Руст ОС у Линуку

У Линук-у можемо приступити функцијама и типовима специфичним за Уник које обезбеђује стд::ос::уник модул, подмодул стд::ос модула у Русту.



Овај модул је део стандардне библиотеке Руст и стога не захтева од вас да инсталирате било какав спољни сандук или зависности.





Хајде да покријемо неке основне АПИ-је и операције које можемо да изведемо на Линук систему из овог модула.

Приступ варијаблама окружења

Можемо приступити променљивим окружења помоћу модула стд::енв. На пример, стд::енв::вар(“ПАТХ”) преузима вредност променљиве окружења ПАТХ.



Размотрите следећи пример програма:

користите стд::енв;
користи стд::ффи::ОсСтринг;

фн рука ( ) {
// Приступите одређеној променљивој окружења
ако дозволити Ок ( вредност ) = енв::вар ( „ВАИЛАНД_ДИСПЛАИ“ ) {
принтлн ! ( „ВАИЛАНД_ДИСПЛАИ={}“ , вредност ) ;
}

// Итерирајте све променљиве окружења
за ( кључ, вредност ) ин енв::варс_ус ( ) {
дозволити кеи_стринг = кеи.то_стринг_лосси ( ) ;
дозволити валуе_стринг = валуе.то_стринг_лосси ( ) ;
принтлн ! ( '{}:{}' , кеи_стринг, валуе_стринг ) ;
}

// Приступите одређеној променљивој окружења као ан ` ОсСтринг `
ако дозволити Неки ( вредност ) = енв::вар_ус ( 'ХОСТТИПЕ' ) {
// Цонверт ` ОсСтринг ` до а ` Низ ` ако потребна
ако дозволити Неки ( валуе_стр ) = валуе.то_стр ( ) {
принтлн ! ( „ХОСТТИПЕ={}“ , валуе_стр ) ;
}
}
}


У датом примеру почињемо са увозом потребних модула. У овом случају, заинтересовани смо за стд::енв и стд::фф::ОсСтринг.

Да бисмо приступили одређеној променљивој окружења, можемо користити функцију енв::вар и проследити име вредности коју желимо да преузмемо. У овом случају добијамо вредност променљиве ВАИЛАНД_ДИСПЛАИ.

Функција враћа вредност променљиве као тип резултата.

Такође можемо итерирати све променљиве окружења користећи енв::варс_ос функцију. Ово враћа итератор са паровима кључ/вредност променљивих окружења. Добро је напоменути да се вредности враћају као тип ОсСтринг. Затим их можемо конвертовати у вредности низа помоћу функције то_стринг_лосси.

Такође можемо приступити одређеним варијаблама окружења помоћу функције енв::вар_ос. Ово би требало да врати тип <Оптион<ОсСтринг> који можемо да конвертујемо у стринг помоћу функције то_стр().

Резултат је следећи:

ВАИЛАНД_ДИСПЛАИ =ваиланд- 0
ХОСТТИПЕ =к86_64

ФС операције помоћу ОС модула

Као што можете претпоставити, ОС модул пружа различите функције и методе за обављање операција везаних за систем датотека.

Узмите следећи програм који показује различите операције које можемо да изведемо користећи стд::ос модул у Линуку:

користите стд::фс;

фн рука ( ) {
// Прочитај фајл
ако дозволити Ок ( садржаја ) = фс::реад_то_стринг ( '/хоме/дебиан/.басхрц' ) {
принтлн ! ( 'басхрц: {}' , садржај ) ;
}

// Креирајте нови директоријум
ако дозволити Ерр ( ерр ) = фс::цреате_дир ( '/хоме/дебиан/нев_дир' ) {
епринтлн ! ( „Креирање директоријума није успело: {}“ , ерр ) ;
}

// Уклоните а фајл
ако дозволити Ерр ( ерр ) = фс::ремове_филе ( '/хоме/дебиан/ремове_ме.ткт' ) {
епринтлн ! ( „Уклањање датотеке није успело: {}“ , ерр ) ;
}
}


У датом примеру демонстрирамо како можемо да читамо садржај датотеке користећи метод фс::реад_то_стринг(). Метод узима путању до циљне датотеке и враћа садржај датотеке као стринг.

Такође можемо креирати нови директоријум користећи функцију фс::цреате_дир() и проследити путању до циљног директоријума као параметар.

Коначно, можемо уклонити одређену датотеку помоћу функције фс::ремове_филе() и проследити циљну датотеку као параметар.

БЕЛЕШКА: Наведени примери су неки основни примери о томе како да извршите операције система датотека на Линук-у помоћу модула стд::фс. Руст пружа свеобухватну колекцију метода и функција које су овде приказане. Погледајте документацију да бисте сазнали више.

Управљање процесима помоћу ОС модула

Као што можете претпоставити, ОС модул обезбеђује подмодуле и функције за рад са процесима у систему.

Узмите следећи пример кода:

користи стд::процесс:: { команда, излаз } ;

фн рука ( ) {
// покренути лс команда
дозволити оутпут = Цомманд::нев ( 'лс' )
.арг ( '-тхе' )
.излаз ( )
.очекивати ( „Извршавање команде није успело“ ) ;

ако оутпут.статус.суццесс ( ) {
дозволити стдоут = Стринг::фром_утф8_лосси ( & оутпут.стдоут ) ;
принтлн ! ( „Излаз команде: {}' , стдоут ) ;
} друго {
дозволити стдерр = Стринг::фром_утф8_лосси ( & оутпут.стдерр ) ;
епринтлн ! ( „Команда није успела: {}' , стдерр ) ;
излаз ( 1 ) ;
}
}


У датом примеру почињемо са увозом потребних модула. У овом случају, потребне су нам методе „цомманд“ и „екит“ из подмодула стд::процесс.

Затим користимо функцију Цомманд::нев() да покренемо команду „лс“ и проследимо аргументе команди.

Ако је успешна, команда би требало да врати листу директоријума за тренутни радни директоријум на следећи начин:

Закључак

Истражили смо како да користимо различите функције и методе које обезбеђује стд::ос модул и подмодули за обављање више операција у Линук и Уник системима. Запамтите да је стд::ос модул опсежан модул који садржи ширу колекцију функција од оних које су демонстриране у овом водичу.