golang process 实现

stvenyin · · 1001 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

package main import ( "fmt" "os" "os/exec" "path/filepath" "time" ) func main() { if len(os.Args) < 2 { fmt.Printf("Usage: %s [command]\n", os.Args[0]) os.Exit(1) } cmdName := os.Args[1] if filepath.Base(os.Args[1]) == os.Args[1] { if lp, err := exec.LookPath(os.Args[1]); err != nil { fmt.Println("look path error:", err) os.Exit(1) } else { cmdName = lp } } procAttr := &os.ProcAttr { Files: []*os.File{os.Stdin, os.Stdout, os.Stderr}, } cwd, err := os.Getwd() if err != nil { fmt.Println("look path error:", err) os.Exit(1) } start := time.Now() process, err := os.StartProcess(cmdName, []string{cwd}, procAttr) if err != nil { fmt.Println("start process error:", err) os.Exit(2) } processState, err := process.Wait() if err != nil { fmt.Println("wait error:", err) os.Exit(3) } fmt.Println() fmt.Println("real", time.Now().Sub(start)) fmt.Println("user", processState.UserTime()) fmt.Println("system", processState.SystemTime()) } end.

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1001 次点击  
加入收藏 微博
0 回复
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传