Einen Prozess vom Befehlsfenster entkoppeln
In Go können Sie mit os.StartProcess() einen untergeordneten Prozess erstellen. Standardmäßig bleibt dieser Prozess jedoch mit dem übergeordneten Befehlsfenster verbunden. Um den Prozess zu entkoppeln und im Hintergrund auszuführen, müssen Sie seine Attribute ändern.
In Ihrem Code haben Sie die procAttr-Struktur eingerichtet, um die Dateideskriptoren für den untergeordneten Prozess umzuleiten. Es scheint jedoch, dass Sie die notwendige Einstellung zum Ausblenden des Konsolenfensters für Windows-Systeme ausgelassen haben.
Um das Konsolenfenster auszublenden, fügen Sie die folgende Zeile zum procAttr.Sys-Mitglied hinzu:
procAttr.Sys.HideWindow = true
Sie haben jedoch erwähnt, dass dies zu einem Fehler „Panik wegen falschem Speicherzeiger“ führt. Dies liegt höchstwahrscheinlich an einem anderen Problem in Ihrem Code, das nichts mit der Prozessentkopplung zu tun hat.
Um Ihr Programm zu kompilieren, ohne eine Verknüpfung zum Windows-GUI-Subsystem herzustellen und die Erstellung des Konsolenfensters zu deaktivieren, verwenden Sie den folgenden Befehl:
go tool 8l -o output.exe -Hwindowsgui input.8
Dadurch wird eine ausführbare Datei generiert, die im Hintergrund ohne Konsolenfenster ausgeführt werden kann.
Das obige ist der detaillierte Inhalt vonWie entkoppele ich einen Go-Prozess vom Befehlsfenster und verstecke das Konsolenfenster in Windows?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!