Heim >Backend-Entwicklung >Golang >Wie kann ich einen Go-Prozess mithilfe von „StartProcess()' von seinem übergeordneten Prozess in Windows trennen?
Um einen mit StartProcess() erstellten Prozess von seinem übergeordneten Prozess (in diesem Fall einer Befehlszeilenaufforderung) zu trennen, kann man Folgendes nutzen die Linker-Option -Hwindowsgui, die von der Go-Toolchain bereitgestellt wird.
Der bereitgestellte Go-Code versucht, mithilfe von StartProcess() einen entkoppelten Prozess mit der folgenden Konfiguration zu erstellen:
<code class="go">var procAttr os.ProcAttr procAttr.Files = []*os.File{nil, nil, nil}</code>
Während das Hinzufügen von procAttr.Sys.HideWindow = true darauf abzielt, das mit dem Prozess verknüpfte Fenster auszublenden, führt es zu dem Fehler „Panik“ aufgrund eines falschen Speicherzeigers.
Die Die richtige Lösung besteht darin, beim Kompilieren des Go-Programms die Linkeroption -Hwindowsgui zu verwenden. Diese Option deaktiviert die Erstellung eines Konsolenfensters für den Prozess bei der Ausführung:
go tool 8l -o output.exe -Hwindowsgui input.8
Durch Aufrufen der Linkeroption -Hwindowsgui wird der Prozess ohne Konsolenfenster erstellt, wodurch er effektiv von der Eingabeaufforderung entkoppelt wird. Dadurch kann der Prozess unabhängig vom übergeordneten Prozess im Hintergrund ausgeführt werden.
Das obige ist der detaillierte Inhalt vonWie kann ich einen Go-Prozess mithilfe von „StartProcess()' von seinem übergeordneten Prozess in Windows trennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!