Nodejs setsid() эквивалент

Я пытаюсь выполнить оболочку Bash в nodejs - который у меня работает, за исключением управления заданиями. Я почти уверен, что это потому, что порожденный процесс не настроен на лидера процесса. В C я смог сделать это, вызвав setsid(). В nodejs я читал, что аналогом является установка опции 'setsid: true' при порождении нового процесса. Я сделал это так:

var child = spawn('/bin/bash', ['--login'], {stdio: [this.slave, this.slave, this.slave], env: {"TERM": "vt100"}, setsid: true});

Однако я все еще получаю сообщение "нет управления заданиями в этой оболочке".
Пример вывода после выделения 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$ 

Итак, в заключение, мои вопросы:
- это правильный способ установить идентификатор сеанса нового процесса? И если да, то как я могу окончательно проверить, что он действительно делает это правильно (как мне кажется, что это не так - это единственное, что я себе представляю, не вызовет никакого контроля работы, так как команда tty является доказательством того, что pty был настроен правильно).
- Если этот метод не сработает, есть ли альтернатива setsid (), которые не включают загрузку модуля? Я напишу аддон C++, если нет.
Спасибо за любую помощь!

1 ответ

Решение

Какую версию узла вы используете? setsid имел обыкновение быть в документации, но был заменен отдельным параметром.

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

Другие вопросы по тегам