use std::process::Command;
use std::process::Stdio;
use std::process::Child;
pub fn waitfor(path: &str) {
let split = shell_words::split(path).expect("Invalid command syntax");
let program = &split[0];
let args = &split[1..];
let mut child = Command::new(program)
.args(args)
.stdin(Stdio::inherit())
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.spawn()
.expect("Failed to start");
child.wait().unwrap();
}
#[inline]
pub fn background(command: &str) -> Child {
let path = command.trim_start_matches("& ");
let split = shell_words::split(path).expect("Invalid command syntax");
let program = &split[0];
let args = &split[1..];
Command::new(program)
.args(args)
.stdin(Stdio::inherit())
.stdout(Stdio::inherit())
.stderr(Stdio::inherit())
.spawn()
.expect("Failed to start")
}
#[inline]
pub fn exec(command: &str){
let path = command.trim_start_matches("exec ");
use std::process::Command;
use std::os::unix::process::CommandExt;
let split = shell_words::split(path).expect("Invalid command syntax");
let program = &split[0];
let args = &split[1..];
let _ = Command::new(program)
.args(args)
.exec();
}