
Linuxシステムでプロセスのpidがある場合は、次のようにしてそのプロセスのstdinに書き込むことができます。
/proc/<pid>/fd/0
しかし、MacOSではこれは不可能に見えます。私はmkfifo
/ namedパイプを使うべきだと聞きました。
ただし、名前付きパイプを使用すると、問題を解決するのがより困難になります。プロセスの開始を制御する場合、MacOSでファイルシステムにfdへの参照を保存する方法はありますか?
たとえば、これを行うと:
#!/usr/bin/env node
node script.js &
NODEJS_PID=$!
上記のNODEJS_PID変数に示されているように、プロセスの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