Sobes.tech
Middle

O que faz a chamada de sistema fork()?

sobes.tech IA

Resposta da IA

A chamada do sistema fork() em sistemas operativos baseados em Unix cria um novo processo que é uma cópia do processo que o chamou (pai). O novo processo é chamado filho. Após a chamada a fork(), você tem dois processos que continuam a execução a partir do ponto da chamada.

Características:

  • O processo filho recebe uma cópia do espaço de endereçamento do pai.
  • O valor de retorno de fork() permite distinguir os processos:
    • No processo pai, é retornado o PID do processo filho.
    • No processo filho, é retornado 0.
    • Em caso de erro, é retornado -1.

Exemplo em Go (através da chamada syscall, pois em Go não há um equivalente direto a fork):

package main

import (
	"fmt"
	"syscall"
)

func main() {
	pid, _, err := syscall.RawSyscall(syscall.SYS_FORK, 0, 0, 0)
	if err != 0 {
		fmt.Println("Falha no fork")
		return
	}
	if pid == 0 {
		fmt.Println("Este é o processo filho")
	} else {
		fmt.Printf("Este é o processo pai, PID do filho: %d\n", pid)
	}
}

Em Go, geralmente usam-se exec.Command e goroutines em vez de fork().