Lors de l'exécution d'un processus dans Go, il est possible de laisser le programme principal attendre que le processus enfant se termine ou de le détacher de le processus parent. Pour détacher un processus, il est nécessaire d'utiliser l'appel système fork, qui crée un nouveau processus partageant le même espace mémoire avec le processus parent.
Voici un exemple de la façon de diaboliser un processus dans 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") }
Dans cet exemple, le package os/exec est utilisé pour créer un nouveau processus à l'aide de la fonction exec.Command. Le champ SysProcAttr est utilisé pour définir l'indicateur HideWindow sur true pour les systèmes d'exploitation Windows, ce qui permet au processus enfant de s'exécuter en arrière-plan.
Après avoir démarré le processus à l'aide de la méthode cmd.Start(), le cmd.Process. La méthode Release() est appelée pour détacher le processus enfant du processus parent. Cela permet au processus parent de continuer à s'exécuter pendant que le processus enfant s'exécute en arrière-plan.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!