パイプラインの隣接プロセスが実行されたことを確認する

パイプラインの隣接プロセスが実行されたことを確認する

私のパイプラインには一連のプロセスがあります。

cat haystack | grep needle | my_process | less

私の理解は、シェルが各コマンドに対して同時にフォークしてexecveを実行することです。

my_processがPIDを決定したと仮定すると、grepとlessが完全に開始されたことを確認します(execve'd)。

ベストアンサー1

さて、Linuxでは以下を確認できます。/proc/PID/exe

(p=$BASHPID; /bin/ls -l /proc/$p/exe; exec /bin/ls -l /proc/$p/exe)
... 0 Jan 17 10:34 /proc/17816/exe -> /bin/bash
... 0 Jan 17 10:34 /proc/17816/exe -> /bin/ls

しかし、私はこれの利点を実際に見ていません。シェルはbeforeパイプを読み書きできないため、execパイプはbefore時間が少しでもスムーズに動作しますexec。実際、これは小さいexecしばらくして実行しているプログラムを調べるためにそこに行くことができても、これが起こっても驚かないでしょう。

おすすめ記事