Ctrl-C 不适用于 pppd 非分离会话

Ctrl-C 不适用于 pppd 非分离会话

我有一个 Mini2440 ARM 板,并且我使用multistrap.

我曾经tmux在不同的窗口中运行多个进程/etc/rc.local。我使用串行端口连接到开发板,并使用 inittab 条目getty在该端口上运行。我用作picocom串行通信器。

当 root 登录时,~/.bashrc将其附加到已经运行的 tmux 服务器,并且可以轻松监控进程。实际的命令是exec tmux attach-session -t "main". tmux 使用默认配置运行。

一切正常,除了其中一个进程( 周围的 shell 脚本pppd)没有Ctrlc从终端接收信息,而其他进程却可以。也Ctrl\有效。kill -INT <pppd_pid>有效,但kill -INT <shellscript_pid>没有。

我真的需要Ctrlc工作。这个设置有什么问题吗?

stty -a编辑:这是shell 脚本中的输出,就在之前pppd

speed 38400 baud; rows 23; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

因为它只是pppd有这个问题的进程,我认为它与它或其配置有关,但是当我pppd在 tmux 之外运行时,Ctrl-C 可以工作。pppd使用nodetach选项运行,因此它停留在终端前台。

我还在我的开发机器(AMD64 上的 Debian 6.0)上测试了它,结果相同。

答案1

你有没有想过尝试一下 GNU screen ?说实话,我对 tmux 没有太多经验,但 screen 总是能很好地完成工作。

答案2

pppd事实证明,这是发行版中使用的特定版本中的一个错误。我检查了之前和之后的版本都pppd没有这个问题。此外,问题并不特定于此拱门和平台或tmux。如果pppd在 shell 脚本内部运行,它不会处理 Ctrl-C,而在 shell 外部运行则没有问题。

相关内容