在 Go 中運行進程時,可以讓主程式等待子進程完成或將其與子進程分離父進程。要分離進程,需要使用 fork 系統調用,該系統調用會建立一個與父進程共享相同記憶體空間的新進程。
以下是如何在 Go 中妖魔化進程的範例:
package main import ( "fmt" "os" "os/exec" ) func main() { // Create a new process using fork cmd := exec.Command("/Path/prog") // Hide the window for Windows OS if os.Getenv("OS") == "Windows_NT" { cmd.SysProcAttr = &os.ProcAttr{Sys: &syscall.SysProcAttr{HideWindow: true}} } // Start the process if err := cmd.Start(); err != nil { fmt.Printf("%v", err) return } // Detach the child process from the parent process if err := cmd.Process.Release(); err != nil { fmt.Printf("%v", err) return } // The parent process can now continue executing fmt.Println("Child process detached successfully") }
在此範例中,os/exec 套件用於使用 exec.Command 函數建立新進程。 SysProcAttr 欄位用於在 Windows 作業系統中將 HideWindow 標誌設為 true,使子程序在背景執行。
使用 cmd.Start() 方法啟動進程後,cmd.Process.呼叫Release()方法將子進程與父進程分離。這允許父進程繼續執行,而子進程在背景運行。
以上是在 Go 中如何將子程序與其父進程分離?的詳細內容。更多資訊請關注PHP中文網其他相關文章!