Heim > Backend-Entwicklung > Golang > Wie kann ich einen Go-Prozess mithilfe von „StartProcess()' von seinem übergeordneten Prozess in Windows trennen?

Wie kann ich einen Go-Prozess mithilfe von „StartProcess()' von seinem übergeordneten Prozess in Windows trennen?

Susan Sarandon
Freigeben: 2024-11-03 19:45:29
Original
793 Leute haben es durchsucht

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

Entkoppeln eines Prozesses in Go

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.

Originalcode

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>
Nach dem Login kopieren

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.

Lösung

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
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage