Sobes.tech
Middle

Que fait l'appel système fork() ?

sobes.tech IA

Réponse de l'IA

L’appel système fork() dans les systèmes d’exploitation basés sur Unix crée un nouveau processus qui est une copie du processus appelant (le parent). Le nouveau processus est appelé enfant. Après l’appel à fork(), vous avez deux processus qui continuent leur exécution à partir du point de l’appel.

Caractéristiques :

  • Le processus enfant reçoit une copie de l’espace d’adresses du parent.
  • La valeur de retour de fork() permet de distinguer les processus :
    • Dans le processus parent, le PID de l’enfant est retourné.
    • Dans le processus enfant, 0 est retourné.
    • En cas d’erreur, -1 est retourné.

Exemple en Go (via l’appel syscall, car Go n’a pas d’équivalent direct à fork) :

package main

import (
	"fmt"
	"syscall"
)

func main() {
	pid, _, err := syscall.RawSyscall(syscall.SYS_FORK, 0, 0, 0)
	if err != 0 {
		fmt.Println("Échec du fork")
		return
	}
	if pid == 0 {
		fmt.Println("Ceci est le processus enfant")
	} else {
		fmt.Printf("Ceci est le processus parent, PID de l’enfant : %d\n", pid)
	}
}

En Go, on utilise généralement exec.Command et les goroutines plutôt que fork().