我正在尝试制作一个使用信号来中断无限计数器循环的程序。 我设法用SIGINT(ctrl + C)中断了程序,但是我无法以其他方式中断它。 我想知道是否可以通过其他方式中断循环,例如在终端运行时按Q键。
我制作了两个Go文件,第一个包含实际的无限循环:
然后该文件捕获SIGINT信号并中断循环:
然后,我会坚持我的第一个评论。我会解释更多。
您不需要发出信号来终止程序-您可以控制它。任何时候调用
问题是,何时触发这些"退出"。或者,在您的示例中,当按下
要解决该问题,您需要将其分解为多个部分。正如我在评论中所说,第1部分正在捕获按键。它不像
第2部分与第1部分紧密相关。即指定事件,即击键。在您的示例中,要知道按下的键是Q,然后调用
第三部分是关于不阻止程序。在Go中,可以使用单独的goroutine检查事件循环或使用旧的回调方法来轻松实现。这取决于您选择的图书馆。
有关信号和
当然,另一个解决方案是将一个键组合(多个键击)绑定到向程序发送信号,但是只要程序是接收键击本身的程序,那就是多余的。
注意:由于库的选择可以变化,因此代码也有很大差异,因此我认为我不能(或应该)提供示例。