Linux 如何使用CRT单元处理程序中的SIGINT?
我有一个控制台应用程序(Linux 如何使用CRT单元处理程序中的SIGINT?,linux,freepascal,lazarus,Linux,Freepascal,Lazarus,我有一个控制台应用程序(程序),它使用CRT单元。在Linux下,当我按CTRL+C时,什么也没有发生。但是,我希望按照预期处理这个SIGINT信号(立即退出程序)。我发现使用CRT会重新定义STDIN和STDOUT内容,这样普通的SIG处理程序就不能工作了。目前,我尝试了fpSignal(SIGINT,SignalHandler(@DoSig)),但仍按CTRL+C键不起任何作用。当我手动(通过htop)向流程发送SIGINT时,处理程序将启动。但不能使用CTRL+C。 不幸的是,不使用CRT
程序
),它使用CRT单元。在Linux下,当我按CTRL+C时,什么也没有发生。但是,我希望按照预期处理这个SIGINT
信号(立即退出程序)。我发现使用CRT
会重新定义STDIN和STDOUT内容,这样普通的SIG处理程序就不能工作了。目前,我尝试了fpSignal(SIGINT,SignalHandler(@DoSig))
,但仍按CTRL+C键不起任何作用。当我手动(通过htop)向流程发送SIGINT时,处理程序将启动。但不能使用CTRL+C。
不幸的是,不使用CRT
装置不是一个选项
非常感谢您的帮助:)原因是CRT单元将重定向标准输入/输出句柄,因此您必须“手动”检查SIGINT,信号处理器将无法工作。
您应该使用KeyPressed功能检查按键是否按下,然后使用ReadKey检查是否发送了SIGINT(例如Ctrl-C) CRT装置叫什么?你是说屏幕吗?X11下的一些终端模拟器?现在大多数电脑都有LCD屏幕…你应该显示你的源代码以获得帮助。你读过吗?我说的“CRT装置”是指freepascal装置CRT: