gpt4 book ai didi

node.js - Nodejs setsid() 等效项

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:08 26 4
gpt4 key购买 nike

我正在尝试在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$

总而言之,我的问题是:
- 这是设置新进程的 session ID 的正确方法吗?如果是这样,我如何明确地检查它是否确实正确地执行了该操作(因为在我看来,它不是 - 这是我想象的唯一会导致没有作业控制的事情,因为 tty 命令是 pty 设置正确的证据)。
- 如果此方法不起作用,是否有任何不涉及下载模块的 setid() 替代方法?如果没有的话我会写一个C++插件。
感谢您的帮助!

最佳答案

您使用的 Node 版本是什么? setid 曾经在文档中,但被替换为独立选项。

https://nodejs.org/api/child_process.html#child_process_options_detached

关于node.js - Nodejs setsid() 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32123867/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com