golang中与ansi c的raise()函数等效的函数是什么?

huangapple go评论81阅读模式
英文:

golang equivalent of ansi c raise()

问题

什么是ANSI C raise()函数的golang等效函数?

在这里可以看到raise()函数的示例用法:

英文:

What is the golang equivalent of the ANSI C raise() function?

See here for an example usage of raise():

答案1

得分: 5

您可以使用os包来实现:

p, err := os.FindProcess(os.Getpid())
p.Signal(os.Interrupt)

此外,您还可以使用os/signal包来捕获发送到您的进程的信号,该包允许您指定一个通道来接收信号:

c := make(chan os.Signal)
signal.Notify(c, os.Interrupt)
sig := <-c
fmt.Printf("收到信号:%s!\n", sig.String())

这个实现在Go Playground上不起作用,因为它不允许您导入os/signal包,但是如果您在本地运行代码,它应该可以正常工作(在我的机器上可以):http://play.golang.org/p/QcrRl2BeNS

英文:

You can do it using the os package:

p, err := os.FindProcess(os.Getpid())
p.Signal(os.Interrupt)

Additionally, you can catch signals sent to your process using the os/signal package, which allows you to specify a channel on which to receive signals:

c := make(chan os.Signal)
signal.Notify(c, os.Interrupt)
sig := &lt;-c
fmt.Printf(&quot;Got %s!\n&quot;, sig.String())

This implementation won't work on the go playground because it won't let you import os/signal, but if you run the code locally, it should work fine (does on my machine): http://play.golang.org/p/QcrRl2BeNS

答案2

得分: 1

process,_ := os.FindProcess(os.Getpid())
process.Signal(os.Kill)

...其中os.Kill是在这里定义的(可悲的少数)标准信号之一,或者是UNIX平台信号在这里定义的。

英文:

Something like this?

process,_ := os.FindProcess(os.Getpid())
process.Signal(os.Kill)

...where os.Kill is one of the (sadly few) standard signals defined <a href="http://golang.org/pkg/os/#Signal">here</a> or UNIX platform signals <a href="http://golang.org/pkg/syscall/#SIGABRT">here</a>.

huangapple
  • 本文由 发表于 2013年7月13日 01:09:56
  • 转载请务必保留本文链接:https://go.coder-hub.com/17620361.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定