google golang exec exit status 2 and 1
25,296
You don't provide any arguments for the exec.Run
dexdump
command, which possibly generates an error like:
dexdump: no file specified
dexdump: [-f] [-h] dexfile...
-d : disassemble code sections
-f : display summary information from file header
-h : display file header details
-C : decode (demangle) low-level symbol names
-S : compute sizes only
What output do you get when you run the following version of the program?
package main
import (
"bytes"
"fmt"
"log"
"os/exec"
)
func main() {
path, err := exec.LookPath("dexdump")
if err != nil {
log.Fatal("LookPath: ", err)
}
fmt.Println(path)
cmd := exec.Command(path)
var out bytes.Buffer
cmd.Stdout = &out
err = cmd.Run()
fmt.Printf("%s\n", out.String())
if err != nil {
log.Fatal("Run: ", err)
}
}
Author by
user1746360
Updated on October 15, 2020Comments
-
user1746360 over 3 years
I want execute the dexdump in Android SDK platform-tools on Go language.
I already set the PATH variable. (I'm use Ubuntu 12.04)
Here is my code:
package main import ( "bytes" "fmt" "log" "os/exec" ) func main() { path, err := exec.LookPath("dexdump") if err != nil { log.Fatal(err) } fmt.Println(path) cmd := exec.Command(path) var out bytes.Buffer cmd.Stdout = &out err2 := cmd.Run() if err2 != nil { log.Fatal(err2) } fmt.Printf("%q\n", out.String()) }
Result: /home/gunwoo/android-sdk-linux/platform-tools/dexdump
2012/10/15 16:44:39 exit status 2
exit status 1
why go doesn't find the path?
-
user1746360 over 11 yearsThank you! I expect to print dexdump usage comment without argument.
-
Matt over 11 yearsThe usage message is probably going to
stderr
, notstdout
. Also the program is returning a non-zero exit code when it prints the usage message, which triggers yourlog.Fatal(err2)
command. If you want to see the output, setcmd.Stderr = &out
and movefmt.Printf("%q\n", out.String())
to before yourif err2 != nil
line.