为了账号安全,请及时绑定邮箱和手机立即绑定

进程完成后读取 stderr

进程完成后读取 stderr

Go
沧海一幻觉 2021-06-04 14:55:13
我convert使用内存中的一些数据(来自 html 表单上传/网络服务器)调用 imagemagick 的命令。这工作正常,但我想在出现错误时获得错误输出convert。我怎样才能做到这一点?这是我的代码:package mainimport (    "bytes"    "io"    "io/ioutil"    "log"    "os/exec"    "path/filepath")func runImagemagick(data []byte, destfilename string) error {    data_buf := bytes.NewBuffer(data)    cmd := exec.Command("convert", "-", destfilename)    stdin, err := cmd.StdinPipe()    if err != nil {        return err    }    err = cmd.Start()    if err != nil {        return err    }    _, err = io.Copy(stdin, data_buf)    if err != nil {        return err    }    stdin.Close()    err = cmd.Wait()    if err != nil {        return err    }    return nil}func main() {    data, err := ioutil.ReadFile("source.gif")    if err != nil {        log.Fatal(err)    }    err = runImagemagick(data, filepath.Join("/tmp", "abc", "dest.png"))    if err != nil {        log.Fatal(err)    }}现在人为的问题是目录/tmp/abc/不存在。通常convert会给我这样的结果:$ convert - /tmp/abc/foo.png < source.gif convert: unable to open image `/tmp/abc/foo.png': No such file or directory @ error/blob.c/OpenBlob/2617.convert: WriteBlob Failed `/tmp/abc/foo.png' @ error/png.c/MagickPNGErrorHandler/1755.但我没有在我的小程序中“看到”这个错误信息。如何获取错误消息并将其显示给我的用户?(另一个子问题是:如果这段代码看起来不错,你能给我一个建议吗?它有什么明显的缺陷吗?)
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 239 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信