在 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