猿问

exec 不运行来自 Golang 应用程序的命令

我正在 Debian 环境中运行 Go 应用程序。我的所有开发都在 OSX 上进行并且运行良好,但是我在从 Go 代码在 shell 上运行命令时遇到问题。


cmdName := "cwebp"

cmdArgs := []string{srcPath, "-o", dstPath}

log.Printf("Executing %s : %+v", cmdName, cmdArgs)

cmd := exec.Command(cmdName, cmdArgs...)

_, err := cmd.StdoutPipe()

if err != nil {

    log.Printf("Error: %s", err)

}

err = cmd.Run()

if err != nil {

    log.Printf("Error: %s", err)

}

应用程序进程从我的 root 用户运行,当我从 shell 运行它时,该命令工作正常。


早些时候,我认为我面临的问题是由于 PATH 环境变量不正确。在运行命令之前打印它,我得到了正确的路径。此外,我尝试使用LookPath并获得了正确的路径/usr/local/bin/cwebp。


慕村225694
浏览 173回答 1
1回答

杨__羊羊

问题不在于命令的执行,而是 Go 无法找到正确的库。在检查命令的输出时,我得到以下信息:cwebp: error while loading shared libraries: libwebp.so.5: cannot open shared object file: No such file or directory这让我得出一个方向,那就是 libwebp 的安装肯定有问题。早些时候,我从源代码构建了 libwebp。所以,我通过安装它apt-get install libwebp-dev并且命令成功运行。
随时随地看视频慕课网APP

相关分类

Go
我要回答