Nodejs setsid()等效
我试图在nodejs中执行一个bash shell – 除了作业控制,我还在工作。 我很确定这是因为产生的进程没有被设置给进程负责人。 在C中,我可以通过调用setsid()来做到这一点。 在nodejs中,我读了相当于在产生新进程时设置选项'setsid:true'。 我这样做是这样的:
var child = spawn('/bin/bash', ['--login'], {stdio: [this.slave, this.slave, this.slave], env: {"TERM": "vt100"}, setsid: true});
但是我仍然收到“在这个shell中没有作业控制”的消息。
示例输出,分配pty ttys002后:
bash: no job control in this shell Amandas-MacBook-Pro:puffshell amanda$ tty /dev/ttys002 Amandas-MacBook-Pro:puffshell amanda$ Amandas-MacBook-Pro:puffshell amanda$ ps PID TTY TIME CMD 2055 ttys000 0:00.05 -bash 2158 ttys000 0:00.01 /bin/bash 2170 ttys000 0:00.11 puffd 2171 ttys000 0:00.01 /bin/bash --login Amandas-MacBook-Pro:puffshell amanda$
总之,我的问题是:
– 这是设置新进程的会话ID的正确方法? 如果是这样的话,我该如何明确地检查它是否正确地做到了这一点(因为在我看来,这不是正确的 – 这是我想象中唯一不会导致任何工作控制的事情,因为tty命令是证据pty设置正确)。
– 如果这个方法不起作用,那么setsid()还有什么替代方法不需要下载模块? 如果没有,我会写一个c ++插件。
谢谢你的帮助!
你使用什么版本的节点? setsid曾经在文档中,但是被一个分离的选项取代。
https://nodejs.org/api/child_process.html#child_process_options_detached