On this page
.1 API-de-processos
Esse documento representa parte dos meus estudos acerca do Livro - Operational Systems Three Easy Pieces, de dominio publico.
Process API
The Fork() Call
Fork() eh usada para criar um novo processo.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
printf("hello (pid:%d)\n", (int) getpid());
int rc = fork();
if (rc < 0) {
// fork failed
fprintf(stderr, "fork failed\n");
exit(1);
} else if (rc == 0) {
// child (new process)
printf("child (pid:%d)\n", (int) getpid());
} else {
// parent goes down this path (main)
printf("parent of %d (pid:%d)\n",
rc, (int) getpid());
}
return 0;
}Podemos perceber que a funcao fork() cria uma ramificacao a partir do processo atual, com outro PID (Process Identifir). Esta funcao cria uma copia quase exata (a excessao do PID) do processo que a chama, neste caso a rotina main. Entretanto, ele podemos notar que ele nao printa novamente o hello world, pois a nova routina surge a partir do momento em que fork eh chamado. Por isso, no controle de fluxo, temos
// TODO

