go exec:exit status 64
接上一篇,找到了查看未读邮件个数方法,需要用go来执行doveadm命令,于是考虑使用go exec包
但是代码写好了之后一直报错:exit status 64,意思是选项错误,但是明明所有选项都是ok的,那么只可能是我使用go exec包的方式不对,最后各种尝试,发现go exec中,命令的所有参数都需要分开填写才行。
1 package main 2 3 import ( 4 "bytes" 5 "fmt" 6 "log" 7 "os/exec" 8 "strings" 9 ) 10 11 func main() { 12 cmd := exec.Command("doveadm", "mailbox", "status", "-u", "test@example.com", "-t", "unseen" ,"INBOX") 13 // cmd := exec.Command("doveadm", "mailbox status -u test@example.com -t unseen INBOX") // 这种写法是不对的 14 cmd.Stdin = strings.NewReader("some input") 15 var out bytes.Buffer 16 cmd.Stdout = &out 17 err := cmd.Run() 18 if err != nil { 19 log.Fatal(err) 20 } 21 fmt.Printf("in all caps: %q\n", out.String()) 22 }