TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

A Criação de Processos em Linux

Por:   •  11/5/2021  •  Relatório de pesquisa  •  541 Palavras (3 Páginas)  •  84 Visualizações

Página 1 de 3

Experiência 04 – Criação de processos em Linux.

A chamada de sistema fork() é utilizada para criar processos em linguagem C. Não é necessário nenhum argumento e o valor de retorno é o identificador (ID) do processo criado.

O propósito de fork() é criar um novo processo que se torna ”filho” do processo que o chamou e após a criação do processo, o processo “pai” e “filho” irão executar a próxima instrução após a chamada de fork().

A chamada de sistema fork() faz uma cópia exata do espaço de endereçamento do processo “pai” para o processo “filho”, ou seja, os processos possuem espaços de endereços separados, fazendo com que alterações no processo “pai” não tenham repercussão no processo “filho” e vice-versa.

O programa abaixo cria um processo “pai” e um processo “filho” com a chamada de sistema fork().

Programa 01 – Criação de processo ”pai” e processo “filho”

#include <unistd.h>

#include <stdio.h>

#include <string.h>

#include <sys/types.h>

#define MAX_COUNT 200

#define BUF_SIZE 100

void main(void)

{

pid_t pid;

int i;

char buf[BUF_SIZE];

fork();

pid = getpid();

for (i = 1; i <= MAX_COUNT; i++) {

sprintf(buf, "PID = %d, valor = %d\n", pid, i);

write(1, buf, strlen(buf));

}

exit(0);

}

Após a chamada de fork() no programa acima, o sistema terá 02 (dois) processos em execução.

Figura 01 – Criação de 2 processos com fork().

O programa abaixo cria os mesmos processos acima, mas faz distinção na utilização de 02 (duas) funções para cada um deles.

Programa 02 - Criação de processo ”pai” e processo “filho” com funções separadas.

#include <unistd.h>

#include <stdio.h>

#include <stdlib.h>

#include <sys/types.h>

#define MAX_COUNT 200

void ChildProcess(void);

void ParentProcess(void);

void main(void) {

pid_t pid;

pid = fork();

if (pid == 0)

ChildProcess();

else

ParentProcess();

exit(0);

}

void ChildProcess(void) {

int i;

for (i = 1; i <= MAX_COUNT; i++)

printf(" Processo FILHO, valor = %d\n", i);

printf(" *** Processo FILHO

...

Baixar como (para membros premium)  txt (3.7 Kb)   pdf (45.6 Kb)   docx (9.1 Kb)  
Continuar por mais 2 páginas »
Disponível apenas no TrabalhosGratuitos.com