Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

google golang exec exit status 2 and 1

Tags:

go

exec

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?

like image 870
user1746360 Avatar asked Oct 15 '12 07:10

user1746360


1 Answers

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)
    }
}
like image 69
peterSO Avatar answered Oct 01 '22 11:10

peterSO