Linux의 Rust Std::OS

Linuxui Rust Std Os



Rust에서 std::os 모듈은 운영 체제 기능에 대한 추상화를 제공합니다. 기본 운영 체제와 상호 작용하여 환경 변수, 파일 시스템 작업, 프로세스 관리 등과 작업할 수 있습니다.

이 예제에서는 Rust std::os 모듈을 사용하여 Unix에서 수행할 수 있는 몇 가지 기본 작업을 다룰 것입니다.







이것은 광범위한 모듈이며 다양한 Unix 관련 작업을 위한 많은 유형과 함수를 포함하고 있음을 기억하는 것이 좋습니다. 따라서 해당 프로세스에 대한 참조 문서를 고려하십시오.



리눅스의 러스트 OS

Linux에서는 Rust의 std::os 모듈의 하위 모듈인 std::os::unix 모듈이 제공하는 Unix 관련 함수 및 유형에 액세스할 수 있습니다.



이 모듈은 Rust 표준 라이브러리의 일부이므로 외부 크레이트나 종속성을 설치할 필요가 없습니다.





이 모듈에서 Linux 시스템에서 수행할 수 있는 몇 가지 기본 API 및 작업을 다루겠습니다.

환경 변수에 액세스

std::env 모듈을 사용하여 환경 변수에 액세스할 수 있습니다. 예를 들어, std::env::var('PATH')는 PATH 환경 변수의 값을 검색합니다.



다음 예제 프로그램을 고려하십시오.

std::env 사용;
std::ffi::OsString 사용;

fn 손 ( ) {
// 특정 환경 변수에 액세스
만약에 허락하다 좋아요 ( ) = 환경::변수 ( 'WAYLAND_DISPLAY' ) {
프린트 ! ( 'WAYLAND_DISPLAY={}' , 값 ) ;
}

// 모든 환경 변수에 대해 반복
~을 위한 ( 핵심 가치 ) ~에 env::wars_us ( ) {
허락하다 key_string = key.to_string_lossy ( ) ;
허락하다 value_string = value.to_string_lossy ( ) ;
프린트 ! ( '{}:{}' , 키_문자열, 값_문자열 ) ;
}

// 특정 환경 변수에 액세스 ~처럼 ` OsString `
만약에 허락하다 일부 ( ) = env::var_us ( '호스트타입' ) {
// 전환하다 ` OsString ` ~에게 ` ` 만약에 필요한
만약에 허락하다 일부 ( value_str ) = 값.to_str ( ) {
프린트 ! ( '호스트타입={}' , value_str ) ;
}
}
}


주어진 예에서는 필요한 모듈을 가져오는 것으로 시작합니다. 이 경우 std::env 및 std::ff::OsString에 관심이 있습니다.

특정 환경 변수에 액세스하려면 env::var 함수를 사용하고 가져오려는 값의 이름을 전달할 수 있습니다. 이 경우 WAYLAND_DISPLAY 변수의 값을 얻습니다.

이 함수는 변수의 값을 결과 유형으로 반환합니다.

env::vars_os 함수를 사용하여 모든 환경 변수를 반복할 수도 있습니다. 환경 변수의 키-값 쌍이 있는 반복자를 반환합니다. 값이 OsString 유형으로 반환된다는 점에 유의하는 것이 좋습니다. 그런 다음 to_string_lossy 함수를 사용하여 문자열 값으로 변환할 수 있습니다.

env::var_os 함수를 사용하여 특정 환경 변수에 액세스할 수도 있습니다. 이것은 to_str() 함수를 사용하여 문자열로 변환할 수 있는 유형을 반환해야 합니다.

결과 출력은 다음과 같습니다.

웨이랜드_디스플레이 =웨이랜드- 0
호스트 유형 =x86_64

OS 모듈을 사용한 FS 작업

짐작할 수 있듯이 OS 모듈은 파일 시스템 관련 작업을 수행하기 위한 다양한 기능과 방법을 제공합니다.

Linux에서 std::os 모듈을 사용하여 수행할 수 있는 다양한 작업을 보여주는 다음 프로그램을 사용하십시오.

std::fs 사용;

fn 손 ( ) {
// 읽다 파일
만약에 허락하다 좋아요 ( 내용물 ) = fs::read_to_string ( '/홈/데비안/.bashrc' ) {
프린트 ! ( 'bashrc: {}' , 내용물 ) ;
}

// 새 디렉터리 만들기
만약에 허락하다 오류 ( 잘못 ) = fs::create_dir ( '/home/debian/new_dir' ) {
eprintln ! ( '디렉토리 생성 실패: {}' , 잘못 ) ;
}

// 제거 파일
만약에 허락하다 오류 ( 잘못 ) = fs::제거_파일 ( '/home/debian/remove_me.txt' ) {
eprintln ! ( '파일 제거 실패: {}' , 잘못 ) ;
}
}


주어진 예제에서는 fs::read_to_string() 메서드를 사용하여 파일의 내용을 읽는 방법을 보여줍니다. 이 메서드는 대상 파일의 경로를 사용하고 파일 내용을 문자열로 반환합니다.

fs::create_dir() 함수를 사용하고 대상 디렉토리의 경로를 매개변수로 전달하여 새 디렉토리를 생성할 수도 있습니다.

마지막으로 fs::remove_file() 함수를 사용하여 특정 파일을 제거하고 대상 파일을 매개변수로 전달할 수 있습니다.

메모: 제공된 예제는 std::fs 모듈을 사용하여 Linux에서 파일 시스템 작업을 수행하는 방법에 대한 몇 가지 기본 예제입니다. Rust는 여기에 설명된 포괄적인 메서드 및 함수 모음을 제공합니다. 자세한 내용은 설명서를 참조하십시오.

OS 모듈을 사용한 프로세스 관리

짐작할 수 있듯이 OS 모듈은 시스템의 프로세스와 함께 작동하는 하위 모듈과 기능을 제공합니다.

다음 예제 코드를 사용하십시오.

std::프로세스:: 사용 { 명령, 출구 } ;

fn 손 ( ) {
// 실행 ls 명령
허락하다 출력 = 명령::새 ( '일' )
.arg ( '-그만큼' )
.산출 ( )
.예상하다 ( '명령을 실행하지 못했습니다' ) ;

만약에 출력.상태.성공 ( ) {
허락하다 stdout = 문자열::from_utf8_lossy ( & output.stdout ) ;
프린트 ! ( '명령 출력: \N {}' , 표준 출력 ) ;
} 또 다른 {
허락하다 stderr = 문자열::from_utf8_lossy ( & output.stderr ) ;
eprintln ! ( '명령 실패: \N {}' , 표준 오류 ) ;
출구 ( 1 ) ;
}
}


주어진 예에서는 필요한 모듈을 가져오는 것으로 시작합니다. 이 경우 std::process 하위 모듈의 'command' 및 'exit' 메서드가 필요합니다.

그런 다음 Command::new() 함수를 사용하여 'ls' 명령을 실행하고 명령에 인수를 전달합니다.

성공하면 명령은 다음과 같이 현재 작업 디렉토리에 대한 디렉토리 목록을 반환해야 합니다.

결론

Linux 및 Unix 계열 시스템에서 여러 작업을 수행하기 위해 std::os 모듈 및 하위 모듈에서 제공하는 다양한 기능과 메서드를 사용하는 방법을 살펴보았습니다. std::os 모듈은 이 자습서에서 설명하는 것보다 더 광범위한 기능 모음을 포함하는 광범위한 모듈입니다.