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