Você está na página 1de 2

2.1) Execute o seguinte código várias vezes. A ordenação dos outputs é sempre a mesma?

Se
não, qual o motivo dos outputs estarem alternados, ou não?

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

#define MAX_COUNT 200

void ChildProcess(void); /* child process prototype */


void ParentProcess(void); /* parent process prototype */

void main(void)
{
pid_t pid;

pid = fork();
if (pid == 0)
ChildProcess();
else
ParentProcess();
}

void ChildProcess(void)
{
int i;

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


printf(" This line is from child, value = %d\n", i);
printf(" *** Child process is done ***\n");
}

void ParentProcess(void)
{
int i;

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


printf("This line is from parent, value = %d\n", i);
printf("*** Parent is done ***\n");
}

2.2) Analise os programas seguintes, quantos "Hello" espera obter e porquê?

a)

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

void main(void)
{
pid_t pid, pid2;

pid = fork();
if (pid > 0) {
pid2 = fork();
puts("Hello 1 \n");
}
puts("Hello 2 \n");
}

b)
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

void main(void)
{
pid_t pid, pid2, pid3;

pid = fork();
pid2 = fork();
if(pid2) printf("Pai - Hello 2 \n"); else printf("Filho - Hello 2 \n");
pid3 = fork();
if(pid3) printf("Pai - Hello 3 \n"); else printf("Filho - Hello 3 \n");
}

Você também pode gostar