获取 Node.js 进程的 stdin 文件描述符的引用,也必须在 MacOS 上工作

获取 Node.js 进程的 stdin 文件描述符的引用,也必须在 MacOS 上工作

在 Linux 机器上,如果我有进程的 pid,我可以使用如下命令写入该进程的 stdin:

/proc/<pid>/fd/0

但在 MacOS 上,这似乎不可能。有人告诉我应该使用mkfifo/ 命名管道。

然而,使用命名管道使问题更难解决。如果您控制进程的启动,MacOS 上是否有办法在文件系统上存储对 fd 的引用?

例如,如果我这样做:

#!/usr/bin/env node
node script.js &
NODEJS_PID=$!                

我可以轻松获取该进程的 pid,如上面的 NODEJS_PID 变量所示。但是,有没有办法捕获对此 Nodejs 进程的 stdin 文件描述符的引用?

如果我可以获得 fd 的路径,那就太酷了,因为我需要从另一个进程写入该 fd。

答案1

由于您知道 OS X 上的 PID,lsof因此可能对您有用:

lsof -p 12345 | awk '$4=="0u"{print $NF}'
/dev/ttys039
# then you can write to the FD
echo "hi" > /dev/ttys039

相关内容