我有一个使用 CRT 单元的控制台应用程序(program
)。在Linux下,当我按CTRL+C
时,没有任何反应。但是,我想按照预期(通过立即退出程序)处理此SIGINT
信号。我发现一些注意事项,使用CRT
重新定义了STDIN和STDOUT的东西,因此普通的SIG处理程序不起作用。目前,我尝试fpSignal(SIGINT, SignalHandler(@DoSig));
,但仍按CTRL+C
无效。当我手动将SIGINT发送到流程时(通过 htop ),处理程序启动。但不是CTRL + C.
不幸的是,不使用CRT
单位不是一种选择。
非常感谢任何帮助:)
答案 0 :(得分:0)
原因是CRT单元将重定向标准输入/输出句柄,因此您必须“手动”检查SIGINT,信号处理程序将无法工作。 您应该检查按下KeyPressed功能的按键,然后使用ReadKey检查是否已发送SIGINT(例如:Ctrl-C)。