-这是设置新进程的会话id的正确方法吗?如果是这样,我如何确定地检查它实际上正确地执行了该操作(在我看来似乎不是这样—这是我能想到的唯一不会导致作业控制的事情,因为tty命令是正确设置的证据)。
-如果这个方法不起作用,是否有其他不需要下载模块的方法来代替setsid() ?如果没有,我会写一个c++插件。
谢谢你的帮助!
我试图在nodejs中执行bash shell -除了工作控制外,我还在工作。我很确定这是因为生成的进程没有被设置为进程leader。在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命令是正确设置的证据)。
-如果这个方法不起作用,是否有其他不需要下载模块的方法来代替setsid() ?如果没有,我会写一个c++插件。
谢谢你的帮助!
您使用的是什么版本的节点?Setsid曾经在文档中,但被一个detached选项所取代。
https://nodejs.org/api/child_process.html child_process_options_detached