Exécution de processus enfants en Rust

RustRustBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous apprenons à utiliser les processus enfants en Rust en utilisant la structure process::Output pour représenter la sortie d'un processus enfant terminé et la structure process::Command pour construire des processus. Le code d'exemple montre comment exécuter la commande rustc --version et gérer la sortie en vérifiant si le processus a réussi ou échoué.

Note : Si le laboratoire ne spécifie pas de nom de fichier, vous pouvez utiliser n'importe quel nom de fichier que vous voulez. Par exemple, vous pouvez utiliser main.rs, le compiler et l'exécuter avec rustc main.rs &&./main.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/DataStructuresandEnumsGroup(["Data Structures and Enums"]) rust(("Rust")) -.-> rust/ErrorHandlingandDebuggingGroup(["Error Handling and Debugging"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/DataTypesGroup -.-> rust/string_type("String Type") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/DataStructuresandEnumsGroup -.-> rust/method_syntax("Method Syntax") rust/ErrorHandlingandDebuggingGroup -.-> rust/panic_usage("panic! Usage") subgraph Lab Skills rust/variable_declarations -.-> lab-99273{{"Exécution de processus enfants en Rust"}} rust/string_type -.-> lab-99273{{"Exécution de processus enfants en Rust"}} rust/function_syntax -.-> lab-99273{{"Exécution de processus enfants en Rust"}} rust/expressions_statements -.-> lab-99273{{"Exécution de processus enfants en Rust"}} rust/method_syntax -.-> lab-99273{{"Exécution de processus enfants en Rust"}} rust/panic_usage -.-> lab-99273{{"Exécution de processus enfants en Rust"}} end

Processus enfants

La structure process::Output représente la sortie d'un processus enfant terminé, et la structure process::Command est un constructeur de processus.

use std::process::Command;

fn main() {
    let output = Command::new("rustc")
     .arg("--version")
     .output().unwrap_or_else(|e| {
            panic!("failed to execute process: {}", e)
    });

    if output.status.success() {
        let s = String::from_utf8_lossy(&output.stdout);

        print!("rustc succeeded and stdout was:\n{}", s);
    } else {
        let s = String::from_utf8_lossy(&output.stderr);

        print!("rustc failed and stderr was:\n{}", s);
    }
}

(On vous encourage à essayer l'exemple précédent avec un drapeau incorrect passé à rustc)

Sommaire

Félicitations ! Vous avez terminé le laboratoire sur les processus enfants. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.