golang を使用した開発プロセス中、一部のタスクを完了するために外部の exe プログラムを呼び出す必要がある場合があります。ここでは、exe を呼び出すための一般的な golang メソッドをいくつか紹介します。
1. os/exec パッケージ
golang 標準ライブラリでは、os/exec パッケージを使用して外部コマンドやプログラムを呼び出すことができます。これは、外部コマンドの実行を容易にする一連の単純な関数と構造を提供します。
Command 関数を使用して Cmd 構造を作成し、実行するコマンドを指定できます。例:
cmd := exec.Command("echo", "hello world")
このコマンドは、ターミナルに「hello world」を出力します。
コマンド機能を使用して、他の実行可能ファイルを実行することもできます。例:
cmd := exec.Command("calc")
このコマンドは、Windows システム上で電卓プログラムを起動します。
パラメータを外部プログラムに渡す必要がある場合は、Args 属性を使用してパラメータを Cmd 構造体に追加できます。例:
cmd := exec.Command("ping", "-c", "4", "www.google.com")
このコマンドは、端末上の Google サーバーに ping を実行し、4 つの結果を出力します。
Command 関数を使用してコマンドを実行した後、Output メソッドを使用して実行結果を取得できます。例:
cmd := exec.Command("ls", "-l") output, err := cmd.Output() if err != nil { fmt.Println(err) } fmt.Println(string(output))
このコマンドは、ターミナル上の現在のディレクトリにあるすべてのファイルを一覧表示し、その詳細情報を出力します。
2. syscall パッケージ
os/exec パッケージはコマンド ライン プログラムの呼び出しのみをサポートしています。Windows API や Linux システム コールなどの高度なインターフェイスを呼び出す必要がある場合は、syscall パッケージを使用できます。 golang標準ライブラリにあります。
Windows を例に挙げると、Windows API を呼び出す必要がある場合は、syscall.LoadLibrary 関数と syscall.GetProcAddress 関数を使用して、ダイナミックリンクライブラリを取得し、API関数を取得します。例:
dll, err := syscall.LoadLibrary("user32.dll") if err != nil { fmt.Println(err) return } defer syscall.FreeLibrary(dll) proc, err := syscall.GetProcAddress(dll, "MessageBoxW") if err != nil { fmt.Println(err) return } lpText, _ := syscall.UTF16PtrFromString("Hello, World!") lpCaption, _ := syscall.UTF16PtrFromString("Message") syscall.Syscall( uintptr(proc), uintptr(0), uintptr(0), uintptr(unsafe.Pointer(lpText)), uintptr(unsafe.Pointer(lpCaption)), )
このコードは、プログラム内の Windows API の MessageBoxW 関数を呼び出して、「Hello, World!」というメッセージを含むポップアップ ウィンドウをポップアップします。
Linux などのシステムの場合、syscall パッケージを使用してシステム コマンドまたはシステム関数を呼び出すこともできます。例:
cmd := "/bin/ls" args := []string{"-l", "/"} env := os.Environ() err := syscall.Exec(cmd, args, env) if err != nil { log.Fatal(err) }
このコードは、プログラム内で Linux システムの /bin/ls コマンドを呼び出し、ルート ディレクトリ内のすべてのファイルとその詳細情報を出力します。
概要:
上記は、golang が exe メソッドを呼び出す一般的な方法です。 os/exec パッケージを使用すると、コマンド ライン プログラムを簡単かつ便利に呼び出すことができます。一方、syscall パッケージは、システム コマンド、API、関数などの高レベルのインターフェイスをより柔軟に呼び出すことができます。実際の開発では、特定の状況に応じてタスクを完了するためにさまざまな方法を選択できます。
以上がgolangはexeメソッドを呼び出しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。