我必须在 Node 中调用一个命令,然后基本上移交给该命令的 stdio,因此在生成子进程并将stdio
选项设置为时,inherit
我得到的行为正是我所追求的。
也就是说,父进程一直在运行,直到子进程退出,虽然它可能并不重要,但我真的更喜欢退出父进程,因为它不再需要了。
我发现我可以通过child.unref()
在生成子进程后立即调用来做到这一点,但是这样做时我会遇到一些非常奇怪的行为。
例如:
var child = child_process.spawn('irb', [], {
detached: true,
stdio: 'inherit'
});
child.unref();
irb repl 正在运行并且父进程已经退出,但是在输入quit
irb repl 时,我得到了这个:
qNameError: undefined local variable or method `uit' for main:Object
from (irb):1
from /Users/RayViljoen/.rvm/rubies/ruby-1.9.3-p385/bin/irb:16:in `<main>'
这只是示例之一,将 irb 替换为 node 或 coffee 具有类似的效果。事实上,这个问题似乎与大多数交互式控制台类似,它们作为子进程生成,然后从父进程中删除。
有没有人经历过这个或知道如何正确地做到这一点?