telnet catch ctrl + c server

时间:2012-10-29 23:11:24

标签: telnet socketserver sigint


我编写了一个像here这样的套接字服务器。如果我在telnet中键入ctrl+c,则服务器现在不执行任何操作。我希望像signal(SIGINT,SIG_IGN)一样抓住它 我该怎么办?

2 个答案:

答案 0 :(得分:2)

telnet程序捕获CTRL-C字符并将其作为单个字节(\x03)沿TCP连接发送到另一端。由接收程序决定如何处理该字节。

如果它被“telnet守护程序”接收,意图通过伪终端提供类似控制台的交互性,那么 组合会为在其下运行的进程生成一个SIGINT,通常是外壳

因此,要回答您的问题,您可以处理收到的\x03字符并在内部生成SIGINT,也可以将整个程序作为由telnetd在伪终端下生成和控制的进程运行。

答案 1 :(得分:0)

telnet客户端(接收SIGINT的进程)应该处理它:要么在本地处理它(例如:终止,或重新发出提示),要么将它作为IAC 某事发送到服务器(BRK?)和/或带外数据。 如果您想将中断传递给服务器,Google的“telnet IAC”可能会让您入门。