2010年3月1日月曜日

Google Go LanuguageでShellコマンドを実行する。

参考ページ1(Google Code Search)
参考ページ2

test_exec.go
//コピーアンドペーストの産物
package main  

import (  
       "fmt"  
       "exec"  
       "io/ioutil"
)  

func main() {
  //序盤の2つ以外はおまじない?
  cmd, err := exec.Run("/bin/ls", []string{"ls", "/"}, nil, "", exec.Pipe, exec.Pipe, exec.DevNull)
  
  //例外処理?
  if err != nil {  
    fmt.Printf("ERROR EXECUTING COMMAND: %d\n", err)
    os.Exit(1)
  }  
  
  //cmd構造体の中にStdin, Stdoutはあったからexec.Runを実行すると
  //なんか色々起こって、これが可能になるんだと思う。
  cmd.Stdin.Close();
   
  buff, err := ioutil.ReadAll(cmd.Stdout)
  if err != nil {  
    fmt.Printf("ERROR READING OUTPUT: %d\n", err)
    os.Exit(1)
  } else {  //改行するとエラーが出る
    fmt.Printf("COMMAND RESULT: %s\n", buff)
  }  
}
そんなに沢山の言語を使ったことないからわからないけど、凄いクセのある書き方をする言語だと感じた。if文の書き方まで厳密に決まってるし。

将来的にC#みたいに言語仕様がどんどん変わってJavaとかに近づいて行くのか?今のスタンスを維持して独自路線を突き進むのか?

個人的にはGoogleには後者であって欲しい。

0 件のコメント:

コメントを投稿