【发布时间】:2022-01-15 11:47:32
【问题描述】:
我想生成一个 node.js 子进程并将它的 stdio 附加到一个特定的 tty,比如说/dev/ttyS0。我知道{ stdio: 'inherit' },但我不想将孩子连接到与父母相同的tty。我知道pty.js,但我不想让它连接到一个伪终端,我希望它连接到一个真实的终端。我尝试将子进程的 stdio 通过管道传输到我使用 serialport 模块打开的 tty:
var SerialPort = require('serialport');
var tty = new SerialPort('/dev/ttyS0');
var cp = require('child_process');
var myprocess = cp.spawn('myprocess');
myprocess.stdout.pipe(tty);
myprocess.stderr.pipe(tty);
tty.pipe(myprocess.stdin);
但它不适用于需要访问真实 tty 的进程,例如 sudo。但是,我实际上并不打算专门使用 sudo。
【问题讨论】: