【发布时间】:2012-10-19 07:42:18
【问题描述】:
我写了一个像here 这样的套接字服务器。如果我在 telnet 中键入ctrl+c,服务器现在什么都不做。我想像signal(SIGINT,SIG_IGN)一样抓住它
我该怎么办?
【问题讨论】:
标签: telnet socketserver sigint
我写了一个像here 这样的套接字服务器。如果我在 telnet 中键入ctrl+c,服务器现在什么都不做。我想像signal(SIGINT,SIG_IGN)一样抓住它
我该怎么办?
【问题讨论】:
标签: telnet socketserver sigint
telnet 程序捕获 CTRL-C 字符并将其作为单个字节 (\x03) 通过 TCP 连接发送到另一端。由接收程序决定如何处理该字节。
如果它被“telnet 守护进程”接收到,旨在通过伪终端提供类似控制台的交互性, 组合会为在其下运行的进程生成一个 SIGINT,通常是外壳。
因此,要回答您的问题,您可以处理收到的 \x03 字符并在内部生成一个 SIGINT,或者您可以将整个程序作为由 telnetd 在伪终端下生成和控制的进程运行。
【讨论】:
telnet 客户端(接收 SIGINT 的进程)应该处理它:或者在本地处理它(例如:终止,或重新发出提示),或者将它作为 IACsomething发送到服务器>(BRK?)和/或带外数据。 如果你想将中断传递给服务器,谷歌的“telnet IAC”可能会让你开始。
【讨论】: