Я пытаюсь выполнить оболочку bash в nodejs - у меня есть работа, кроме управления заданиями. Я уверен, что это связано с тем, что порожденный процесс не устанавливается лидером процесса. В C я смог сделать это, вызвав setid(). В nodejs я читал, что эквивалент устанавливает параметр «setsid: true» при нерестах нового процесса. Я сделал это так:Nodejs setsid() эквивалент
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 был настроен правильно).
- Если этот метод не работает, существуют ли альтернативы setid(), которые не связаны с загрузкой модуля? Я напишу аддон C++, если его нет.
Спасибо за помощь!
Это было, спасибо! –