Rust Std::OS в Linux

Rust Std Os V Linux



В Rust модуль std::os обеспечивает абстракцию над функциональностью операционной системы. Это позволяет нам взаимодействовать с базовой операционной системой для работы с переменными среды, операциями файловой системы, управлением процессами и многим другим.

В этом примере мы рассмотрим некоторые основные операции, которые вы можете выполнять в Unix с помощью модуля Rust std::os.







Полезно помнить, что это обширный модуль, содержащий множество типов и функций для различных операций, связанных с Unix. Поэтому, пожалуйста, рассмотрите документацию для справки по соответствующим процессам.



ОС Rust в Linux

В Linux мы можем получить доступ к специфичным для Unix функциям и типам, которые предоставляются модулем std::os::unix, подмодулем модуля std::os в Rust.



Этот модуль является частью стандартной библиотеки Rust и, следовательно, не требует установки каких-либо внешних крейтов или зависимостей.





Давайте рассмотрим некоторые основные API и операции, которые мы можем выполнять в системе Linux из этого модуля.

Доступ к переменным среды

Мы можем получить доступ к переменным среды, используя модуль std::env. Например, std::env::var('PATH') извлекает значение переменной окружения PATH.



Рассмотрим следующий пример программы:

используйте std::env;
используйте std::ffi::OsString;

рука ( ) {
// Доступ к определенной переменной среды
если позволять Хорошо ( ценить ) = среда::вар ( 'WAYLAND_DISPLAY' ) {
печать ! ( 'WAYLAND_DISPLAY={}' , ценить ) ;
}

// Перебрать все переменные окружения
для ( ключ, значение ) в env::wars_us ( ) {
позволять key_string = key.to_string_lossy ( ) ;
позволять value_string = value.to_string_lossy ( ) ;
печать ! ( '{}:{}' , ключевая_строка, значение_строка ) ;
}

// Доступ к определенной переменной среды как ан ` Осстринг `
если позволять Некоторый ( ценить ) = env::var_us ( 'ТИП ХОЗЯИНА' ) {
// Конвертировать ` Осстринг ` к ` Нить ` если нужный
если позволять Некоторый ( value_str ) = значение.to_str ( ) {
печать ! ( 'ХОСТИП={}' , значение_стр ) ;
}
}
}


В данном примере мы начинаем с импорта необходимых модулей. В данном случае нас интересуют std::env и std::ff::OsString.

Чтобы получить доступ к определенной переменной среды, мы можем использовать функцию env::var и передать имя значения, которое мы хотим получить. В этом случае мы получаем значение переменной WAYLAND_DISPLAY.

Функция возвращает значение переменной как тип результата.

Мы также можем перебрать все переменные среды, используя функцию env::vars_os. Это возвращает итератор с парами ключ-значение переменных среды. Следует отметить, что значения возвращаются как тип OsString. Затем мы можем преобразовать их в строковые значения, используя функцию to_string_lossy.

Мы также можем получить доступ к определенным переменным среды, используя функцию env::var_os. Это должно вернуть тип , который мы можем преобразовать в строку с помощью функции to_str().

В результате получается следующее:

WAYLAND_DISPLAY =wayland- 0
HOSTTYPE =x86_64

Операции ФС с использованием модуля ОС

Как вы можете догадаться, модуль ОС предоставляет различные функции и методы для выполнения операций, связанных с файловой системой.

Возьмите следующую программу, которая демонстрирует различные операции, которые мы можем выполнять с помощью модуля std::os в Linux:

используйте std::fs;

рука ( ) {
// Прочитать файл
если позволять Хорошо ( содержание ) = fs::read_to_string ( '/home/debian/.bashrc' ) {
печать ! ( 'башрк: {}' , содержание ) ;
}

// Создать новый каталог
если позволять ошибся ( ошибаться ) = fs:: create_dir ( '/home/debian/new_dir' ) {
eprintln ! ( 'Не удалось создать каталог: {}' , ошибаюсь ) ;
}

// Удалить файл
если позволять ошибся ( ошибаться ) = fs::remove_file ( '/home/debian/remove_me.txt' ) {
eprintln ! ( 'Не удалось удалить файл: {}' , ошибаюсь ) ;
}
}


В данном примере мы демонстрируем, как мы можем прочитать содержимое файла, используя метод fs::read_to_string(). Метод принимает путь к целевому файлу и возвращает содержимое файла в виде строки.

Мы также можем создать новый каталог, используя функцию fs::create_dir() и передав путь к целевому каталогу в качестве параметра.

Наконец, мы можем удалить конкретный файл с помощью функции fs::remove_file() и передать целевой файл в качестве параметра.

ПРИМЕЧАНИЕ: Приведенные примеры — это основные примеры того, как выполнять операции с файловой системой в Linux с помощью модуля std::fs. Rust предоставляет полный набор методов и функций, которые демонстрируются здесь. Обратитесь к документации, чтобы узнать больше.

Управление процессами с помощью модуля ОС

Как вы можете догадаться, модуль ОС предоставляет подмодули и функции для работы с процессами в системе.

Возьмите следующий пример кода:

используйте std::process:: { команда, Выход } ;

рука ( ) {
// запустить лс команда
позволять вывод = Команда:: новый ( 'лс' )
.arg ( '-' )
.выход ( )
.ожидать ( 'Не удалось выполнить команду' ) ;

если выход.статус.успех ( ) {
позволять стандартный вывод = String::from_utf8_lossy ( & вывод.stdout ) ;
печать ! ( 'Вывод команды: \n {}' , стандартный вывод ) ;
} еще {
позволять stderr = String::from_utf8_lossy ( & вывод.stderr ) ;
eprintln ! ( 'Команда не выполнена: \n {}' , стдерр ) ;
Выход ( 1 ) ;
}
}


В данном примере мы начинаем с импорта необходимых модулей. В этом случае нам понадобятся методы «команда» и «выход» из подмодуля std::process.

Затем мы используем функцию Command::new() для запуска команды «ls» и передачи аргументов команде.

В случае успеха команда должна вернуть список каталогов для текущего рабочего каталога следующим образом:

Заключение

Мы рассмотрели, как использовать различные функции и методы, предоставляемые модулем и подмодулями std::os, для выполнения множества операций в Linux и Unix-подобных системах. Помните, что модуль std::os — это расширенный модуль, который содержит более широкий набор функций, чем те, которые демонстрируются в этом руководстве.