私のパイプラインには一連のプロセスがあります。
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
しばらくして実行しているプログラムを調べるためにそこに行くことができても、これが起こっても驚かないでしょう。