寻找有关如何使用套接字传递文件描述符的示例.io或IPC



使用终端启动Node.js process A

进程A使用child_process.spawn启动process B

依次,process B启动工作进程,这些都是相同的类型,我们称它们为process(es) C

我希望C进程写入原始终端,但我希望B进程写入日志文件。

为了完成这一点,我目前的想法是,我必须通过IPC或socket.io将代表当前终端的文件描述符传递给进程B。

我正在寻找如何通过IPC/套接字文件描述符的例子。但是空手而归。

我真的在找两篇关于信息的文章:

(a)如何获得代表当前终端的文件描述符(在最基本的情况下,这些fd就是整数0 1 2stdin,stdout和stderr,但我不认为这些将在我的) .

(b)我正在寻找一个关于如何在IPC中传递fd的代码示例node . js。(套接字。IO也可以,如果可能的话)。

从我的简短研究来看,文件描述符似乎只是整数,所以它们可以与JSON一起传递,如下所示:

JSON.stringify({fd: 18});

,你可以在Node.js或socket中使用IPC传递此数据。Io,或者其他的

虽然,我的研究还表明,仅仅因为你手里有一个"代表文件描述符"的整数,这并不能给你太多的保证。

更多信息:

如果您在终端运行'tty'命令,如下所示:

$ tty

你会得到这样的结果:

/dev/ttys001

那么在Node.js中,如果你做

const fd = fs.openSync('/dev/ttys001','a');

那么您将得到tty的文件描述符,并且fd应该是一个整数。

可以使用该信息写入tty,如下所示:

const fd = fs.openSync('/dev/ttys001','a');
const stream = fs.createWriteStream(null,{fd:fd});
process.stdout.pipe(stream);
process.stderr.pipe(stream);

我花了一段时间才弄明白,所以也许它会对你有所帮助。

相关内容

  • 没有找到相关文章

最新更新