我已经写了一个像这里这样的套接字服务器。如果我输入ctrl+c
telnet,服务器现在什么都不做。我想抓住它,signal(SIGINT,SIG_IGN)
我该怎么办?
问问题
1325 次
2 回答
2
telnet 程序捕获 CTRL-C 字符并将其作为单个字节 ( \x03
) 通过 TCP 连接发送到另一端。由接收程序决定如何处理该字节。
如果它被打算通过伪终端提供类似控制台的交互性的“telnet 守护进程”接收,则该组合会为在其下运行的进程(通常是 shell)生成一个 SIGINT。
因此,要回答您的问题,您可以处理接收到的\x03
字符并在内部生成一个 SIGINT,或者您可以将整个程序作为由 telnetd 在伪终端下生成和控制的进程运行。
于 2012-10-30T00:43:50.433 回答
0
telnet 客户端(接收 SIGINT 的进程)应该处理它:或者在本地处理它(例如:终止,或重新发出提示),或者将它作为 IAC东西(BRK?)和/或输出发送到服务器波段数据。如果你想将中断传递给服务器,谷歌的“telnet IAC”可能会让你开始。
于 2012-10-30T00:54:13.563 回答