我试图看看当我运行一个命令时系统调用会发生什么,但似乎在|之后的那些命令无法显示?像:
strace -f cat a.txt| cat
似乎strace和-f perimeter可以显示整个过程。我认为最后一部分是由fork创建的子进程。为什么以及如何制作它?
答案 0 :(得分:2)
来自strace
手册(强调我的)。
-f跟踪子进程,因为它们是由创建的 由于fork(2),当前跟踪进程, vfork(2)和clone(2)系统调用。
您的案例中的跟踪流程是第一个cat
流程。第二个cat
进程不是第一个cat
进程的子进程。 fork由shell完成。
实现目标的一种方法是跟踪shell:
strace -f bash -c "cat a.txt| cat"