我想捕获从控制台发送的Ctrl C(SIGINT
)信号,并打印出一些部分运行总数。
这在戈兰可能吗?
注意:当我第一次发布这个问题时,我对Ctrl C是SIGTERM
而不是SIGINT
感到困惑。
要稍微添加到其他答案中,如果您确实想要捕获SIGTERM(kill命令发送的默认信号),可以使用syscall。SIGTERM
代替操作系统。打断请注意,系统调用接口是特定于系统的,可能无法在任何地方工作(例如,在windows上)。但它很好地兼顾了这两个方面:
c := make(chan os.Signal, 2)
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
....
这项工作:
package main
import (
"fmt"
"os"
"os/signal"
"syscall"
"time" // or "runtime"
)
func cleanup() {
fmt.Println("cleanup")
}
func main() {
c := make(chan os.Signal)
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
go func() {
<-c
cleanup()
os.Exit(1)
}()
for {
fmt.Println("sleeping...")
time.Sleep(10 * time.Second) // or runtime.Gosched() or similar per @misterbee
}
}
您可以使用操作系统/信号包来处理传入信号CtrlC是SIGINT,因此您可以使用它来捕获操作系统。中断。
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
go func(){
for sig := range c {
// sig is a ^C, handle it
}
}()
使程序终止并打印信息的方式完全取决于您。
问题内容: 我想捕获从控制台发送的()信号并打印出部分运行总计。 Golang有可能吗? 注意:当我第一次发布问题时,我对被代替感到困惑。 问题答案: 您可以使用os / signal包来处理输入信号。+ 是SIGINT,因此您可以使用它来捕获。 导致程序终止和打印信息的方式完全取决于您。
问题内容: 任何Throwable都可以被捕获 输出: 因此,如果在初始化块期间做不好的事情,我希望能够捕获ExceptionInInitializerError。但是,以下操作无效: 输出: 并且如果我更改代码以另外捕获ArrayIndexOutOfBoundsException 被捕获的是ArrayIndexOutOfBoundsException: 谁能告诉我为什么呢? 问题答案: 顾名思义
这个问题不是关于Rollbar tho:)
问题内容: 我已使用批注将其用于获取计算的属性。我需要的是那些用注解注解的字段/获取器应延迟加载。 这甚至有可能吗? 谢谢 问题答案: 是的。只需使用@Basic(fetch = FetchType.LAZY) 注释属性的字段/ 获取器,然后使用hibernate提供的此ant任务即可为实体类进行字节码检测。否则,将默默忽略该属性的LAZY加载。 该文档包含有关如何使用此ant任务进行字节码检测的
问题内容: 是否可以获取有关Golang中调用方函数的信息?例如,如果我有 我怎样才能得到那个叫? 我可以使用其他语言(例如,在C#中,我只需要使用class属性) 问题答案: 扩展我的评论,这是一些返回当前func调用者的代码 有关更多示例:https : //play.golang.org/p/cv-SpkvexuM
问题内容: 此问题与跨域资源共享(CORS)有关。 如果在发出CORS请求时出现错误,Chrome(以及AFAIK其他浏览器)会将错误记录到错误控制台。消息示例可能如下所示: XMLHttpRequest无法加载。原产地不被访问控制允许来源允许的。 我想知道是否有办法以编程方式获取此错误消息?我尝试将调用包装在try/catch中,也尝试添加事件处理程序。两者均未收到错误消息。 问题答案: 看到: