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 имел обыкновение быть в документации, но был заменен отдельным параметром.