Closed2

【Go】os/exec で外部コマンドを実行する

shoetshoet

os/execパッケージとは

  • Goのプログラムから外部のプログラムを実行するパッケージである。
  • Pythonでいうところのsubprocessにあたる。
shoetshoet

基本的な使い方

  • 構造体を定義して実行する方法
func ExecLsByCreateStruct() {
	var bufOut bytes.Buffer
	var bufErr bytes.Buffer
	cmd := exec.Cmd{}
	cmd.Stdout = &bufOut
	cmd.Stderr = &bufErr
	cmd.Path = "/bin/ls"

	if err := cmd.Start(); err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
	if err := cmd.Wait(); err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
	fmt.Println(bufOut.String())
}
  • 関数で実行する方法
func ExecLsByFunction() {
	var bufOut bytes.Buffer
	var bufErr bytes.Buffer
	cmd := exec.Command("lll")

	cmd.Stdout = &bufOut
	cmd.Stderr = &bufErr

	if err := cmd.Run(); err != nil { // Run関数の場合はWaitが不要
		fmt.Println(err)
		os.Exit(1)
	}
	fmt.Println(bufOut.String())
}
このスクラップは2023/10/14にクローズされました