golang 执行系统命令 ps aux | grep "xxxx",总是异常退出 
                                                    
                        
                    
                    
  
                    
                    导致这个问题的原因是管道符 | 不能写在 exec.Command() 中,要分开执行两条命令。方法如下
func Demo() (err error) {
    psCmd := exec.Command("ps", "aux")
    psStdout, psStderr := SetCommandStd(psCmd)
    err = psCmd.Run()
    if err != nil {
      err = errors.New(err.Error() + psStderr.String())
      return
    }
    // 筛选
    grepCmd := exec.Command("grep", "mysql")
    grepCmd.Stdin = psStdout
    grepStdout, grepStderr := SetCommandStd(grepCmd)
    err = grepCmd.Run()
    if err != nil {
      err = errors.New(err.Error() + grepStderr.String())
      return
    }
}
func SetCommandStd(cmd *exec.Cmd) (stdout, stderr *bytes.Buffer) {
    stdout = &bytes.Buffer{}
    stderr = &bytes.Buffer{}
    cmd.Stdout = stdout
    cmd.Stderr = stderr
    return
}
楼下回答有正解
本作品采用《CC 协议》,转载必须注明作者和本文链接
          
          
          
                关于 LearnKu
              
                    
                    
                    
 
推荐文章: