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 }

 

posted @ 2018-04-23 22:29  冷冰若水  阅读(945)  评论(0编辑  收藏  举报