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

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • @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 非常感谢!
  • #6 @harryhaos 谢谢您的解答!你说的是是可以解决打印输出数据相同的问题,这样import一次package包就可以。我的本意是想知道在go里面,怎么才能import同一个package两次以上,每个别名的包的代码执行中完全相互独立。 就像主贴里的MyObjA和MyObjB都是从oopYummy而来,但是在main里面,无论各类变量赋值还是各种函数的执行调用,都可以相互独立。 不知道怎么弄才能达到这个目的?或许golang的机制不能这么做么?