想到这样一个需求:
在一个终端命令(如Linux服务器)程序进行中,想监听用户的快捷键,应对快捷键做一些动作.现在我可以对ctrl+c这种信号做一些判断,包括kill -10 这些信号做处理.但是否有办法接收更多的快捷方式.
如: 在一个多并发的程序进行中,监听用户的ctrl+p,就可以wait,暂停当前的过程,并且再通过询问,或者快捷键再决定是继续或者退出.
是否有好的办法,或者hacker的方式满足需求也行,先多谢!!!
PS: google到的是说跟terminal有很大关系,而且widnows的不好弄.
但我还是想两者都能支持,或者说接收两次ctrl+c才算是结束,一次是询问是否还有继续,如果继续就恢复,如果不继续就执行退出的相关操作. 不知道这个方式是否可行.(多线程的方式)
https://groups.google.com/forum/#!topic/golang-nuts/EyHBO-K_p8c
给一个极度 hack 的方案,不推荐真的这么做,但是是可以 work 的。主要做法就是用 stty 改变 /dev/tty 的设置,让程序可以立即读到 tty 的每一个字符的输入,同时禁用屏幕回显。
P.S. 执行完这个程序后记得手动执行
stty echo
,要不然,嘿嘿〜