Что произойдёт, если выполнить такой фрагмент кода в Go?

cmd := exec.Command("vim", "filename")
cmd.Run()

Что угодно, но только не то, что ожидает разработчик.

Чтобы пользователей вашей  программы на смог работать с другой программой в интерактивном режиме, нужно добавить несколько строк:

cmd := exec.Command("vim", "filename")
cmd.Stdout = os.Stdout
cmd.Stdin = os.Stdin
cmd.Stderr = os.Stderr
cmd.Run()

Ещё несколько способов это сделать, найденные на просторах интернета:

func Run(name string, args ...string) os.Error { 
  cmd := Command(name, args...) 
  cmd.Stdin = os.Stdin 
  cmd.Stdout = os.Stdout 
  cmd.Stderr = os.Stderr 
  cmd.Env = os.Environ() 
  return cmd.Run() 
}
func Exec(bin string, arg string) (retStr string,err os.Error) {
        cmd,err:=exec.LookPath(bin)
        if err != nil {
                return "",err
        }
        if arg != "" {
                arg= cmd + " " + arg
        }
        a:=strings.Split(arg," ",-1)
        c,err := exec.Run(cmd, a,nil, "", exec.DevNull, exec.Pipe, exec.DevNull)
        if err != nil {
                return "",err
        }
        defer c.Close()
        out,_:=ioutil.ReadAll(c.Stdout)
        retStr= strings.TrimRight(string(out),"\n")
        return retStr,nil
}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *