我有一个函数,该函数可以播放main
程序打印到标准输出并退出后继续执行的声音。我的理由是,我希望声音在程序退出后结束播放,但我不希望main
程序在退出前等待声音结束播放。
我找到了一种在独立过程中执行声音的方法,方法是将声音变成名为playsound
的可执行文件并执行go install
。然后在我的主程序中,我在main()
的结尾处调用它:
func startPlaySound() {
cmd := exec.Command("playsound")
cmd.Start()
}
main() {
// code that prints and exits
startPlaySound()
}
这可行,但是我希望能够在主程序退出后播放声音而无需创建可执行文件。我宁愿在包含播放声音的代码的函数上运行cmd.Start()
的等效项。
换句话说,我希望它看起来像这样:
func playSound() {
// code that plays the sound
}
func startPlaySound() {
cmd := CmdFromFunction(playSound)
cmd.Start()
}
main() {
// code that prints and exits
startPlaySound()
}
是否存在类似CmdFromFunction
的东西?
main
goroutine。我试图将playSound
分离为一个单独的进程,该进程将在main
goroutine退出后继续执行。这个问题的两个答案都涉及执行外部程序,而这正是我要避免的事情。playSound
转换为名为playsound
的可执行文件,现在正使用cmd.Start()
将其作为进程执行。我只是想寻找一个比创建一个完全独立的可执行文件更直接的方法。答案 0 :(得分:-1)
GO例程并不意味着是进程
This可能有效。我自己做过的,但是您可能只限于bash shell。
cmd := exec.Command("bash", "-c", "playsound", "&")