std::process::Command runs external programs and captures their output. I use it for CLI tools that wrap other commands, build scripts, or integration tests. Methods like .arg(), .env(), and .current_dir() configure the process. .output() runs and waits, returning stdout/stderr. .spawn() starts the process without waiting. For streaming output, use .stdout(Stdio::piped()) and read from the child's handles. Always check the exit status. I use Command for running formatters, compilers, or shell scripts from Rust. It's safer than shell-ing out because you control arguments explicitly, avoiding injection vulnerabilities.