Process.prototype.wait = function() { if (this._result === null) { var r = os.waitpid(this._pid); assert.equal(r.pid, this._pid); this._result = {exit_status: 0, term_signal: 0}; if (os.WIFEXITED(r.status)) { this._result.exit_status = os.WEXITSTATUS(r.status); } if (os.WIFSIGNALED(r.status)) { this._result.term_signal = os.WTERMSIG(r.status); } } return this._result; }
var wfd = p[1]; var pid = os.fork(); if (pid == 0) { // child os.dup2(wfd, 1, false); os.execv(system.executable, [system.executable, path.join(__dirname, 'helper8.js')]); assert(false); } else { // parent os.close(wfd); var data = ''; for (;;) { var chunk = os.read(rfd, 16834); chunk = new TextDecoder().decode(chunk); if (chunk) { data += chunk; } else { break; } } assert.equal(data, 'HELLO SJS\n'); var r = os.waitpid(pid); assert.equal(r.pid, pid); assert(os.WIFEXITED(r.status)); assert.equal(os.WEXITSTATUS(r.status), 0); }