我不明白以下内容:
mkfifo p;
$ (>p ps -f | >>p echo $BASHPID) &
[1] 983527
$ cat p
983529
PID PPID C STIME TTY TIME CMD
981815 165343 0 19:57 pts/27 00:00:00 bash
983527 981815 0 21:09 pts/27 00:00:00 bash # <- child bash process `(...)`
983528 983527 0 21:09 pts/27 00:00:00 ps -f
983530 981815 0 21:09 pts/27 00:00:00 cat p
(...) &
产生一个 PID 为 983527 的子进程。它是一个 bash 进程。
ps -f
在 PID 为 983528的子进程中执行。(...)
它是管道的左侧组件命令...|...
。
echo $BASHPID
报告将在 PID 983529 的进程中执行。它应该是管道的右侧组件,...|...
并且应该被列为 bash 进程。
最后的解释正确吗?为什么我们看不到ps -f
命令列出的最后一个进程?