2

我有一个使用CRT单元的控制台应用程序 ( program) 。在 Linux 下,当我按下 时,什么也没有发生。但是,我想按预期处理这个信号(通过立即退出程序)。我发现一些注意事项 using重新定义了 STDIN 和 STDOUT 的东西,所以普通的 SIG 处理程序不起作用。目前,我试过了,但仍然按下没有任何作用。当我手动(通过htop )向进程发送 SIGINT 时,处理程序会启动。但不是使用 CTRL+C。不幸的是,不使用单位不是一种选择。CTRL+CSIGINTCRTfpSignal(SIGINT, SignalHandler(@DoSig));CTRL+CCRT

任何帮助是极大的赞赏 :)

4

1 回答 1

0

原因是 CRT 单元将重定向标准输入/输出句柄,因此您必须“手动”检查 SIGINT,信号处理程序将不起作用。您应该使用 KeyPressed 功能检查是否按下了键,然后使用 ReadKey 检查是否已发送 SIGINT(例如:Ctrl-C)。

于 2013-05-19T15:00:31.917 回答