Allow init to change stdio
This commit is contained in:
parent
2868b3098a
commit
c81388d929
|
@ -1,3 +1,6 @@
|
|||
[package]
|
||||
name = "init"
|
||||
version = "0.1.0"
|
||||
|
||||
[dependencies]
|
||||
syscall = { path = "../../syscall" }
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
extern crate syscall;
|
||||
|
||||
use std::env;
|
||||
use std::fs::File;
|
||||
use std::io::{BufRead, BufReader, Result};
|
||||
|
@ -50,6 +52,17 @@ pub fn run(file: &str) -> Result<()> {
|
|||
} else {
|
||||
println!("init: failed to run: no argument");
|
||||
},
|
||||
"stdio" => if let Some(stdio) = args.next() {
|
||||
let _ = syscall::close(2);
|
||||
let _ = syscall::close(1);
|
||||
let _ = syscall::close(0);
|
||||
|
||||
let _ = syscall::open(&stdio, syscall::flag::O_RDWR);
|
||||
let _ = syscall::open(&stdio, syscall::flag::O_RDWR);
|
||||
let _ = syscall::open(&stdio, syscall::flag::O_RDWR);
|
||||
} else {
|
||||
println!("init: failed to set stdio: no argument");
|
||||
},
|
||||
_ => {
|
||||
let mut command = Command::new(cmd);
|
||||
for arg in args {
|
||||
|
|
Loading…
Reference in a new issue