about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock7
-rw-r--r--src/main.rs18
2 files changed, 23 insertions, 2 deletions
diff --git a/Cargo.lock b/Cargo.lock
new file mode 100644
index 0000000..a779727
--- /dev/null
+++ b/Cargo.lock
@@ -0,0 +1,7 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "salaryman"
+version = "0.1.0"
diff --git a/src/main.rs b/src/main.rs
index e7a11a9..c4ed431 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,3 +1,17 @@
-fn main() {
-    println!("Hello, world!");
+use std::process::{Command, Stdio, Child};
+use std::io::Read;
+
+fn exec(image: &str, args: Vec<&str>) -> Result<Child, Box<dyn std::error::Error>> {
+    let child = Command::new(image).args(args).stdin(Stdio::piped()).stdout(Stdio::piped()).spawn()?;
+    Ok(child)
+}
+
+fn main() -> Result<(), Box<dyn std::error::Error>> {
+    let mut child = exec("java", vec!["-jar", "minecraft_server.jar"])?;
+    std::thread::sleep(std::time::Duration::from_secs(60));
+    let mut buf: [u8; 512] = [0; 512];
+    child.stdout.as_mut().unwrap().read(&mut buf[..])?;
+    println!("{}", String::from_utf8_lossy(&buf));
+    child.kill()?;
+    Ok(())
 }