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().