Ctrl-C如何通过tmux传播

时间:2016-11-17 14:32:34

标签: linux tmux

我知道当我按下Ctrl-C时,操作系统pts系统会解释它并向前台进程组发送SIGINT。我只是想知道它是如何通过tmux传播的。

假设我正在使用X服务器和窗口管理器运行普通的Linux。我打开了xterm,其中zsh正在运行tmux。在此tmux中,我正在运行bash并在其中运行./a.out

过程树,如window manager - > xterm - > zsh - > tmux client。然后tmux server - > bash - > ./a.out

所以当我按下键盘上的Ctrl-C时,X服务器首先捕获它并告诉活动窗口xterm"嘿,这个人只需按下Ctrl-C"。 xterm通过发送到伪终端zsh a" Ctrl-C"告诉它直接运行的进程(pts/0)我点击了Ctrl-C字符。操作系统看到了一个" Ctrl-C"伪终端中的字符并将其转换为SIGINT到前台进程组(zshtmux client)。然后tmux client必须已收到此SIGINT,因此它会告知tmux servertmux server然后将SIGINT发送到它刚刚创建的伪终端的前台进程组(其中bash./a.out)。对不起,如果一切看起来都很混乱。但由于tmux的工作原理,tmux servertmux client是两个独立的流程。

现在,如果我想模仿这种行为,我可以发送一个SIGINTtmux client并期望./a.out收到SIGINT,好像我只是按了# 34;按Ctrl-C"在我的键盘上。但没有任何反应。我想我错了,你可以帮我吗?

0 个答案:

没有答案