初级会员
  • 第 18714 位会员
  • karl_zhao
  • 2018-05-18 09:40:21
  • Offline
  • 15 89

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • It is very niubi!
  • @jinl80 感谢!犯这样的错误,无语了,害我查了半天代码
  • Niu Bi, Niu Bi!
  • 1楼 @Mericusta 请指教! 我做了一个demo示例,Go程序调用的一个子程序myFakeTool,很简单的代码生成的。 myFakeTool的代码: func main(){ sigChan := make(chan os.Signal) signal.Notify(sigChan) select{ case sig:=<-sigChan: fmt.Println("接受到来自系统的信号:",sig) } } myFakeTool就是模拟一个引用Ctrl+C信号的小程序。 主Go程序如下: func subProgram() { cmdString := "myFakeTool This_Is_Test_For_Ctrl_C" cmd := exec.Command(os.Getenv("SHELL"), "-c", cmdString) cmd.Stderr = os.Stderr cmd.Stdout = os.Stdout cmd.Stdin = os.Stdin cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} fmt.Println(cmdString, "...") err := cmd.Run() if err != nil { fmt.Println("Command Error!") } fmt.Printf("pid is %0d.\n", cmd.Process.Pid) } func main() { globalWg.Add(1) go func() { subProgram() globalWg.Done() }() fmt.Println("start main programme.") time.Sleep(time.Duration(10) * time.Second) time.Sleep(time.Duration(100) * time.Second) globalWg.Wait() fmt.Println("end main programme.") } 可是程序运行起来没有达到效果,子程序没有捕捉到Ctrl+C。 请大佬指点!
  • @criyle 非常感谢!