为什么 strace -f 在 GNOME 终端上不起作用?

为什么 strace -f 在 GNOME 终端上不起作用?

我尝试运行命令

strace -f gnome-terminal --wait |& grep write

然后在打开的终端窗口中输入ls并按 Enter 键。

我希望看到与, ,write字符相对应的系统调用被发送到在终端内运行的 Bash 子进程,以及子子进程写入其输出时的系统调用,但是当我运行 时,我没有看到任何系统调用发生。ls\nwritelsls

write当我运行时我确实看到了这些系统调用

strace -f xterm |& grep write

为什么strace -f无法跟踪 的子进程gnome-terminal

答案1

执行终端仿真的实际操作gnome-terminal-server并不是gnome-terminal您启动的命令的后代。通过一些/或类似的魔法(我不熟悉)gnome-terminal启动,即要求已经运行的服务启动终端。gnome-terminal-serversystemddbus

您可以找出gnome-terminal-serverPID 并使用 附加到它strace -p PID。请注意,如果您有多个gnome-terminal选项卡或窗口,这将跟踪所有它们。

相关内容