Rust Std::OS trong Linux

Rust Std Os Trong Linux



Trong Rust, mô-đun std::os cung cấp một sự trừu tượng hóa chức năng của hệ điều hành. Nó cho phép chúng tôi tương tác với hệ điều hành cơ bản để làm việc với các biến môi trường, hoạt động của hệ thống tệp, quản lý quy trình, v.v.

Trong ví dụ này, chúng tôi sẽ đề cập đến một số thao tác cơ bản mà bạn có thể thực hiện trên Unix bằng cách sử dụng mô-đun Rust std::os.







Bạn nên nhớ rằng đây là một mô-đun mở rộng và nó chứa nhiều loại và chức năng cho các hoạt động liên quan đến Unix khác nhau. Do đó, vui lòng xem xét tài liệu để tham khảo về các quy trình tương ứng.



Hệ điều hành Rust trong Linux

Trong Linux, chúng ta có thể truy cập các chức năng và kiểu dành riêng cho Unix được cung cấp bởi mô-đun std::os::unix, một mô-đun phụ của mô-đun std::os trong Rust.



Mô-đun này là một phần của thư viện tiêu chuẩn Rust và do đó không yêu cầu bạn cài đặt bất kỳ thùng hoặc phụ thuộc bên ngoài nào.





Hãy để chúng tôi đề cập đến một số API và hoạt động cơ bản mà chúng tôi có thể thực hiện trên hệ thống Linux từ mô-đun này.

Truy cập các biến môi trường

Chúng ta có thể truy cập các biến môi trường bằng mô-đun std::env. Ví dụ: std::env::var(“PATH”) truy xuất giá trị của biến môi trường PATH.



Xét chương trình ví dụ sau:

sử dụng std::env;
sử dụng std::ffi::OsString;

fn tay ( ) {
// Truy cập một biến môi trường cụ thể
nếu như cho phép Được rồi ( giá trị ) = env::var ( 'WAYLAND_DISPLAY' ) {
bản in ! ( 'WAYLAND_DISPLAY={}' , giá trị ) ;
}

// Lặp lại tất cả các biến môi trường
( giá trị cốt lõi ) TRONG env::wars_us ( ) {
cho phép key_string = key.to_string_lossy ( ) ;
cho phép value_string = value.to_string_lossy ( ) ;
bản in ! ( '{}:{}' , chuỗi khóa, chuỗi giá trị ) ;
}

// Truy cập một biến môi trường cụ thể BẰNG MỘT ` OsString `
nếu như cho phép Một số ( giá trị ) = env::var_us ( 'KIỂU CHỦ' ) {
// Chuyển thành ` OsString ` đến một ` Sợi dây ` nếu như cần thiết
nếu như cho phép Một số ( value_str ) = value.to_str ( ) {
bản in ! ( 'HOSTTYPE={}' , value_str ) ;
}
}
}


Trong ví dụ đã cho, chúng tôi bắt đầu bằng cách nhập các mô-đun cần thiết. Trong trường hợp này, chúng tôi quan tâm đến std::env và std::ff::OsString.

Để truy cập một biến môi trường cụ thể, chúng ta có thể sử dụng hàm env::var và chuyển tên của giá trị mà chúng ta muốn tìm nạp. Trong trường hợp này, chúng tôi nhận được giá trị của biến WAYLAND_DISPLAY.

Hàm trả về giá trị của biến dưới dạng kết quả.

Chúng ta cũng có thể lặp lại tất cả các biến môi trường bằng hàm env::vars_os. Điều này trả về một trình vòng lặp với các cặp khóa-giá trị của các biến môi trường. Cần lưu ý rằng các giá trị được trả về dưới dạng kiểu OsString. Sau đó, chúng ta có thể chuyển đổi chúng thành giá trị chuỗi bằng cách sử dụng hàm to_string_lossy.

Chúng ta cũng có thể truy cập các biến môi trường cụ thể bằng hàm env::var_os. Điều này sẽ trả về một loại mà chúng ta có thể chuyển đổi thành một chuỗi bằng cách sử dụng hàm to_str().

Đầu ra kết quả như sau:

WAYLAND_DISPLAY =wayland- 0
LOẠI CHỦ =x86_64

Hoạt động của FS bằng cách sử dụng mô-đun hệ điều hành

Như bạn có thể đoán, mô-đun HĐH cung cấp nhiều chức năng và phương thức khác nhau để thực hiện các thao tác liên quan đến hệ thống tệp.

Lấy chương trình sau minh họa các hoạt động khác nhau mà chúng ta có thể thực hiện bằng cách sử dụng mô-đun std::os trong Linux:

sử dụng std::fs;

fn tay ( ) {
// Đọc một tài liệu
nếu như cho phép Được rồi ( nội dung ) = fs::read_to_string ( '/home/debian/.bashrc' ) {
bản in ! ( 'bashrc: {}' , nội dung ) ;
}

// Tạo một thư mục mới
nếu như cho phép sai ( sai lầm ) = fs::create_dir ( '/home/debian/new_dir' ) {
eprintln ! ( 'Không thể tạo thư mục: {}' , lỗi ) ;
}

// Xóa một tài liệu
nếu như cho phép sai ( sai lầm ) = fs::remove_file ( '/home/debian/remove_me.txt' ) {
eprintln ! ( 'Xóa tệp không thành công: {}' , lỗi ) ;
}
}


Trong ví dụ đã cho, chúng tôi trình bày cách đọc nội dung của tệp bằng phương thức fs::read_to_string(). Phương thức lấy đường dẫn đến tệp đích và trả về nội dung tệp dưới dạng một chuỗi.

Chúng ta cũng có thể tạo một thư mục mới bằng hàm fs::create_dir() và chuyển đường dẫn đến thư mục đích làm tham số.

Cuối cùng, chúng ta có thể xóa một tệp cụ thể bằng hàm fs::remove_file() và chuyển tệp đích làm tham số.

GHI CHÚ: Các ví dụ được cung cấp là một số ví dụ cơ bản về cách thực hiện các hoạt động của hệ thống tệp trên Linux bằng cách sử dụng mô-đun std::fs. Rust cung cấp một bộ sưu tập đầy đủ các phương thức và chức năng được trình bày ở đây. Tham khảo tài liệu để tìm hiểu thêm.

Quản lý quy trình bằng mô-đun hệ điều hành

Như bạn có thể đoán, mô-đun HĐH cung cấp các mô-đun con và các tính năng để hoạt động với các quy trình trong hệ thống.

Lấy mã ví dụ sau:

sử dụng std::tiến trình:: { Yêu cầu, lối ra } ;

fn tay ( ) {
// chạy ls yêu cầu
cho phép đầu ra = Lệnh :: mới ( 'là' )
.arg ( '-các' )
.đầu ra ( )
.trông chờ ( 'Không thể thực hiện lệnh' ) ;

nếu như đầu ra.status.success ( ) {
cho phép thiết bị xuất chuẩn = Chuỗi::from_utf8_lossy ( & đầu ra.stdout ) ;
bản in ! ( 'Đầu ra lệnh: \N {}' , tiêu chuẩn ) ;
} khác {
cho phép stderr = Chuỗi::from_utf8_lossy ( & đầu ra.stderr ) ;
eprintln ! ( 'Lệnh không thành công: \N {}' , tiêu chuẩn ) ;
lối ra ( 1 ) ;
}
}


Trong ví dụ đã cho, chúng tôi bắt đầu bằng cách nhập các mô-đun cần thiết. Trong trường hợp này, chúng ta cần các phương thức “command” và “exit” từ mô đun con std::process.

Sau đó, chúng tôi sử dụng hàm Command::new() để chạy lệnh “ls” và chuyển đối số cho lệnh.

Nếu thành công, lệnh sẽ trả về danh sách thư mục cho thư mục làm việc hiện tại như sau:

Phần kết luận

Chúng ta đã khám phá cách sử dụng các chức năng và phương pháp khác nhau được cung cấp bởi mô-đun std::os và các mô-đun con để thực hiện nhiều thao tác trong các hệ thống giống như Linux và Unix. Hãy nhớ rằng mô-đun std::os là một mô-đun mở rộng chứa nhiều tính năng hơn những tính năng được trình bày trong hướng dẫn này.