`StartProcess()`를 사용하여 Windows의 상위 프로세스에서 Go 프로세스를 어떻게 분리할 수 있나요?

Susan Sarandon
풀어 주다: 2024-11-03 19:45:29
원래의
698명이 탐색했습니다.

How can I detach a Go process from its parent in Windows using `StartProcess()`?

Go에서 프로세스 분리

StartProcess()를 사용하여 생성된 프로세스를 상위(이 경우 명령줄 프롬프트)에서 분리하려면 다음을 활용하면 됩니다. Go 툴체인에서 제공하는 -Hwindowsgui 링커 옵션.

원본 코드

제공된 Go 코드는 다음 구성으로 StartProcess()를 사용하여 분리된 프로세스를 생성하려고 시도합니다.

<code class="go">var procAttr os.ProcAttr 
procAttr.Files = []*os.File{nil, nil, nil}</code>
로그인 후 복사

procAttr.Sys.HideWindow = true를 추가하면 프로세스와 관련된 창을 숨기는 것이 목적이지만 잘못된 메모리 포인터에 대해 "패닉" 오류가 발생합니다.

해결책

적절한 해결책은 Go 프로그램을 컴파일할 때 -Hwindowsgui 링커 옵션을 사용하는 것입니다. 이 옵션은 실행 시 프로세스에 대한 콘솔 창 생성을 비활성화합니다.

go tool 8l -o output.exe -Hwindowsgui input.8
로그인 후 복사

-Hwindowsgui 링커 옵션을 호출하면 프로세스가 콘솔 창 없이 생성되어 명령 프롬프트에서 효과적으로 분리됩니다. 이를 통해 프로세스는 상위 프로세스와 관계없이 백그라운드에서 실행될 수 있습니다.

위 내용은 `StartProcess()`를 사용하여 Windows의 상위 프로세스에서 Go 프로세스를 어떻게 분리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿