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 中国語 Web サイトの他の関連記事を参照してください。