我编写了一个像here这样的套接字服务器。如果我在telnet中键入ctrl+c
,则服务器现在不执行任何操作。我希望像signal(SIGINT,SIG_IGN)
一样抓住它
我该怎么办?
答案 0 :(得分:2)
telnet程序捕获CTRL-C字符并将其作为单个字节(\x03
)沿TCP连接发送到另一端。由接收程序决定如何处理该字节。
如果它被“telnet守护程序”接收,意图通过伪终端提供类似控制台的交互性,那么 组合会为在其下运行的进程生成一个SIGINT,通常是外壳
因此,要回答您的问题,您可以处理收到的\x03
字符并在内部生成SIGINT,也可以将整个程序作为由telnetd在伪终端下生成和控制的进程运行。
答案 1 :(得分:0)
telnet客户端(接收SIGINT的进程)应该处理它:要么在本地处理它(例如:终止,或重新发出提示),要么将它作为IAC 某事发送到服务器(BRK?)和/或带外数据。 如果您想将中断传递给服务器,Google的“telnet IAC”可能会让您入门。