1 |
yuzu |
2 |
use std::io::Read; |
2 |
yuzu |
3 |
use std::process::{Child, Command, Stdio}; |
3 |
yuzu |
2 |
|
4 |
|
|
fn exec(image: &str, args: Vec<&str>) -> Result<Child, Box<dyn std::error::Error>> { |
5 |
yuzu |
3 |
let child = Command::new(image) |
6 |
|
|
.args(args) |
7 |
|
|
.stdin(Stdio::piped()) |
8 |
|
|
.stdout(Stdio::piped()) |
9 |
|
|
.spawn()?; |
10 |
yuzu |
2 |
Ok(child) |
11 |
yuzu |
1 |
} |
12 |
yuzu |
2 |
|
13 |
|
|
fn main() -> Result<(), Box<dyn std::error::Error>> { |
14 |
|
|
let mut child = exec("java", vec!["-jar", "minecraft_server.jar"])?; |
15 |
|
|
std::thread::sleep(std::time::Duration::from_secs(60)); |
16 |
|
|
let mut buf: [u8; 512] = [0; 512]; |
17 |
|
|
child.stdout.as_mut().unwrap().read(&mut buf[..])?; |
18 |
|
|
println!("{}", String::from_utf8_lossy(&buf)); |
19 |
|
|
child.kill()?; |
20 |
|
|
Ok(()) |
21 |
|
|
} |