add comments and try to fix binding the child process pid
This commit is contained in:
committed by
Bennet Bleßmann
parent
2b052bf8dd
commit
82e989f631
@@ -8399,13 +8399,19 @@ impl Machine {
|
|||||||
functor_stub(atom!("process_create"), 3)
|
functor_stub(atom!("process_create"), 3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String
|
||||||
let exe_r = self.deref_register(1);
|
let exe_r = self.deref_register(1);
|
||||||
|
// [String,...]
|
||||||
let args_r = self.deref_register(2);
|
let args_r = self.deref_register(2);
|
||||||
|
// [std] | [null] | [pipe, Var] | [file, String]
|
||||||
let stdin_r = self.deref_register(3);
|
let stdin_r = self.deref_register(3);
|
||||||
let stdout_r = self.deref_register(4);
|
let stdout_r = self.deref_register(4);
|
||||||
let stderr_r = self.deref_register(5);
|
let stderr_r = self.deref_register(5);
|
||||||
|
// [env | environment, [[String, String],...]]
|
||||||
let env_r = self.deref_register(6);
|
let env_r = self.deref_register(6);
|
||||||
|
// Var | String
|
||||||
let cwd_r = self.deref_register(7);
|
let cwd_r = self.deref_register(7);
|
||||||
|
// Var
|
||||||
let pid_r = self.deref_register(8);
|
let pid_r = self.deref_register(8);
|
||||||
|
|
||||||
let exe = self.machine_st.value_to_str_like(exe_r).unwrap();
|
let exe = self.machine_st.value_to_str_like(exe_r).unwrap();
|
||||||
@@ -8484,11 +8490,16 @@ impl Machine {
|
|||||||
|
|
||||||
match command.spawn() {
|
match command.spawn() {
|
||||||
Ok(child) => {
|
Ok(child) => {
|
||||||
self.machine_st
|
let pid = child.id();
|
||||||
.unify_fixnum(Fixnum::build_with(child.id()), pid_r);
|
self.machine_st.bind(
|
||||||
|
pid_r.as_var().unwrap(),
|
||||||
|
fixnum_as_cell!(Fixnum::build_with(pid)),
|
||||||
|
);
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
Err(_) => {
|
Err(err) => {
|
||||||
|
// TODO give better error indication
|
||||||
|
dbg!(err);
|
||||||
self.machine_st.fail = true;
|
self.machine_st.fail = true;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user