golang을 사용한 개발 과정에서 일부 작업을 완료하기 위해 외부 exe 프로그램을 호출해야 하는 경우가 있습니다. 다음은 exe를 호출하기 위한 몇 가지 일반적인 golang 메서드입니다.
1.os/exec 패키지
golang 표준 라이브러리에서는 os/exec 패키지를 사용하여 외부 명령과 프로그램을 호출할 수 있습니다. 외부 명령을 쉽게 실행할 수 있도록 간단한 기능과 구조 세트를 제공합니다.
명령 기능을 사용하여 Cmd 구조를 만들고 실행할 명령을 지정할 수 있습니다. 예:
cmd := exec.Command("echo", "hello world")
이 명령은 터미널에 "hello world"를 출력합니다.
Command 기능을 이용하면 다른 실행 파일도 실행할 수 있습니다. 예:
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 시스템 호출과 같은 고급 인터페이스를 호출해야 하는 경우 golang 표준 라이브러리의 syscall 패키지를 사용할 수 있습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!