X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=src%2FSpawn.vala;h=d3b9428b9f96ef5d841aed9c3892683eb9bdfc26;hb=e1ae4dd4fe92d7104274c4935db55fd0d5e80857;hp=76a6ede385640104d080f780543f52631071be4c;hpb=8d46a2fbc31997af8c2861e1f092e280c26a9df6;p=app.Builder.js diff --git a/src/Spawn.vala b/src/Spawn.vala index 76a6ede38..d3b9428b9 100644 --- a/src/Spawn.vala +++ b/src/Spawn.vala @@ -71,6 +71,7 @@ public class Spawn : Object public bool is_async = true; public bool throw_exceptions = false; + public bool detach = false; public Spawn(string cwd, string[] args) throws Error { @@ -153,7 +154,23 @@ public class Spawn : Object GLib.debug("cd %s; %s" , this.cwd , string.joinv(" ", this.args)); - + if (this.detach) { + Process.spawn_async_with_pipes ( + this.cwd, + this.args, + this.env.length > 0 ? this.env : null, + SpawnFlags.SEARCH_PATH | SpawnFlags.DO_NOT_REAP_CHILD, + null, + out this.pid); + ChildWatch.add (this.pid, (pid, status) => { + // Triggered when the child indicated by child_pid exits + Process.close_pid (pid); + + }); + + return; + + } Process.spawn_async_with_pipes ( this.cwd, this.args, @@ -166,7 +183,7 @@ public class Spawn : Object out standard_error); // stdout: - + //print(JSON.stringify(gret)); @@ -354,7 +371,7 @@ public class Spawn : Object */ private bool read(IOChannel ch) { - string prop = (ch == this.out_ch) ? "output" : "stderr"; + // string prop = (ch == this.out_ch) ? "output" : "stderr"; // print("prop: " + prop); @@ -388,6 +405,7 @@ public class Spawn : Object } else { this.stderr += buffer; + this.output_line( buffer); } //_this[prop] += x.str_return; //if (this.cfg.debug) {