这是程序的要点:
while(true)
{
//bunch of codes that gets data from port ,
//if there is no data it waits here .
}
我用的是linux,有没有内置的支持像Ctrl+C这样的按键。我可以使用signal(SIGINT, signal_callback_handler);捕捉到这一点,但是Ctrl+C有一些问题,因为它会给出错误。
我想在按键时跳出这个循环,这是可能的吗?如果是,如何操作。
我有一个脚本运行在我的linux服务器的背景上,我希望捕捉到信号,比如重新启动或任何可能杀死这个脚本的东西,而不是在实际退出之前保存任何重要信息。
我想我需要抓住的大部分是,SIGINT,SIGTERM,SIGHUP,SIGKILL。
如何捕捉这些信号并让它执行退出函数,否则继续执行它正在做的任何事情?
伪perl代码:
#!/usr/bin/perl
use stricts;
use warnings;
while (true)
{
#my happy code is running
#my happy code will sleep for a few until it
我知道如何捕捉每一个信号
idleConnsClosed := make(chan bool)
SignalChannel := make(chan os.Signal, 1)
// Notify to SignalChannel any signal received
signal.Notify(SignalChannel)
go func() {
for {
sig := <-SignalChannel
log.Notice("Signal %#v received", sig)
switch sig {
那么,假设我有这样的代码:
import signal
from time import sleep
def signalHandler(sig, frame):
print "signalHandler"
while True:
sleep(1)
#print "Caught" # Uncomment this line, and you get multiple signals - commented, you don't.
signal.signal(signal.SIGINT, signalHa