Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nodejs setsid()等效项_Node.js_Bash_Shell_Pty_Setsid - Fatal编程技术网

Node.js Nodejs setsid()等效项

Node.js Nodejs setsid()等效项,node.js,bash,shell,pty,setsid,Node.js,Bash,Shell,Pty,Setsid,我试图在nodejs中执行bashshell——除了作业控制之外,我还可以使用它。我很确定这是因为生成的流程没有设置为流程负责人。在C语言中,我可以通过调用setsid()来实现这一点。在nodejs中,我了解到,在生成新进程时,等价物是设置选项“setsid:true”。我是这样做的: var child = spawn('/bin/bash', ['--login'], {stdio: [this.slave, this.slave, this.slave], env: {"TERM": "

我试图在nodejs中执行bashshell——除了作业控制之外,我还可以使用它。我很确定这是因为生成的流程没有设置为流程负责人。在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++插件。br>
谢谢你的帮助

您使用的是哪个版本的node?setsid以前在文档中,但被一个分离的选项取代