分享
Spawning process _ golang
jackkiexu · · 3139 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
Sometimes our Go programs need to spawn other, non-Go process. For example, the syntax highlighting on this site is implemented by spawning a pygmentize process from a Go program. Let's look at a few examples of spawning processes from Go
package main import ( "fmt" "io/ioutil" "os/exec" ) func main() { dateCmd := exec.Command("date") dateOut, err := dateCmd.Output() if err != nil { panic(err) } fmt.Println("> date") fmt.Println(string(dateOut)) grepCmd := exec.Command("grep", "hello") grepIn, _ := grepCmd.StdinPipe() grepOut, _ := grepCmd.StdoutPipe() grepCmd.Start() grepIn.Write([]byte("hello grep\ngoodbye grep")) grepIn.Close() grepBytes, _ := ioutil.ReadAll(grepOut) grepCmd.Wait() fmt.Println("> grep hello") fmt.Println(string(grepBytes)) lsCmd := exec.Command("bash", "-c", "ls -a -l -h") lsOut, err := lsCmd.Output() if err != nil { panic(err) } fmt.Println("> ls -a -l -h") fmt.Println(string(lsOut)) }
> date Wed Apr 1 13:15:32 CST 2015 > grep hello hello grep > ls -a -l -h total 3648 drwxr-xr-x 16 xjk staff 544B Apr 1 13:09 . drwxr-xr-x+ 30 xjk staff 1.0K Mar 6 14:00 .. -rw-r--r--@ 1 xjk staff 6.0K Mar 27 11:21 .DS_Store -rw-r--r-- 1 xjk staff 838B Mar 30 13:38 Reading.go -rw-r--r-- 1 xjk staff 553B Mar 27 13:12 URL.go -rw-r--r-- 1 xjk staff 598B Mar 30 13:45 Writing.go -rw-r--r-- 1 xjk staff 402B Mar 30 13:23 base64.go -rw-r--r-- 1 xjk staff 447B Mar 31 13:28 commandLineFlags.go -rwxr-xr-x 1 xjk staff 1.7M Mar 31 13:21 commonLineArgument -rw-r--r-- 1 xjk staff 209B Mar 31 13:20 commonLineArgument.go -rw-r--r-- 1 xjk staff 261B Apr 1 13:02 environmentVariables.go -rw-r--r-- 1 xjk staff 298B Mar 31 13:15 lineFilters.go -rw-r--r-- 1 xjk staff 384B Mar 27 13:04 number_parsing.go -rw-r--r-- 1 xjk staff 189B Mar 27 13:18 sha.go -rw-r--r-- 1 xjk staff 720B Apr 1 13:15 spawningProcess.go -rwxr-xr-x 1 xjk staff 243B Mar 27 11:25 urllib001.p
总结 :
1 : ...
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信3139 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
Sometimes our Go programs need to spawn other, non-Go process. For example, the syntax highlighting on this site is implemented by spawning a pygmentize process from a Go program. Let's look at a few examples of spawning processes from Go
package main import ( "fmt" "io/ioutil" "os/exec" ) func main() { dateCmd := exec.Command("date") dateOut, err := dateCmd.Output() if err != nil { panic(err) } fmt.Println("> date") fmt.Println(string(dateOut)) grepCmd := exec.Command("grep", "hello") grepIn, _ := grepCmd.StdinPipe() grepOut, _ := grepCmd.StdoutPipe() grepCmd.Start() grepIn.Write([]byte("hello grep\ngoodbye grep")) grepIn.Close() grepBytes, _ := ioutil.ReadAll(grepOut) grepCmd.Wait() fmt.Println("> grep hello") fmt.Println(string(grepBytes)) lsCmd := exec.Command("bash", "-c", "ls -a -l -h") lsOut, err := lsCmd.Output() if err != nil { panic(err) } fmt.Println("> ls -a -l -h") fmt.Println(string(lsOut)) }
> date Wed Apr 1 13:15:32 CST 2015 > grep hello hello grep > ls -a -l -h total 3648 drwxr-xr-x 16 xjk staff 544B Apr 1 13:09 . drwxr-xr-x+ 30 xjk staff 1.0K Mar 6 14:00 .. -rw-r--r--@ 1 xjk staff 6.0K Mar 27 11:21 .DS_Store -rw-r--r-- 1 xjk staff 838B Mar 30 13:38 Reading.go -rw-r--r-- 1 xjk staff 553B Mar 27 13:12 URL.go -rw-r--r-- 1 xjk staff 598B Mar 30 13:45 Writing.go -rw-r--r-- 1 xjk staff 402B Mar 30 13:23 base64.go -rw-r--r-- 1 xjk staff 447B Mar 31 13:28 commandLineFlags.go -rwxr-xr-x 1 xjk staff 1.7M Mar 31 13:21 commonLineArgument -rw-r--r-- 1 xjk staff 209B Mar 31 13:20 commonLineArgument.go -rw-r--r-- 1 xjk staff 261B Apr 1 13:02 environmentVariables.go -rw-r--r-- 1 xjk staff 298B Mar 31 13:15 lineFilters.go -rw-r--r-- 1 xjk staff 384B Mar 27 13:04 number_parsing.go -rw-r--r-- 1 xjk staff 189B Mar 27 13:18 sha.go -rw-r--r-- 1 xjk staff 720B Apr 1 13:15 spawningProcess.go -rwxr-xr-x 1 xjk staff 243B Mar 27 11:25 urllib001.p
总结 :
1 : ...