我有一个控制台应用程序(program),它使用crt单元。在linux下,当我按下CTRL+C时,什么都不会发生。但是,我想像人们期望的那样处理这个SIGINT信号(立即退出程序)。我发现,使用CRT重新定义了stdin和stdout的内容,因此普通的sig处理程序无法工作。目前,我尝试了fpSignal(SIGINT, SignalHandler(@DoSig));,但仍然按CTRL+C没有任何效果。当我手动(通过htop)向进程发送sigint时,处理程序启动。但不能用ctrl+c。
不幸的是,不使用CRT单元不是一个选项。
非常感谢您的帮助:)

最佳答案

原因是crt单元将重定向标准的输入/输出句柄,所以您必须“手动”检查sigint,信号处理器将无法工作。
你应该用key pressed功能检查是否按下了键,然后用readkey检查是否发送了sigint(例如:ctrl-c)。

关于linux - 如何在使用CRT单元的程序中处理SIGINT?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14569028/

10-12 21:34