Jump to content

Processos em Linux usando linguagem c


raider
 Share

Recommended Posts

Alguém me poderá ajudar a resolver o seguinte problema:

Tendo um array de 1000 posições, faça um programa que crie 5 processos e:

  • Dado um número, procurar esse número no array.
  • Cada processo filho, procura 200 posições.
  • O processo que encontrar o número, deve imprimir a posição do array onde se encontra. Também deve "retornar" como valor de saída o número do processo (1, 2, 3, 4, 5).
  • Os processos que não encontrarem o número devem "retornar" como valor de saída o valor 0.
  • O processo pai tem de esperar que todos os filhos terminem e imprimir o número do processo onde esse número foi encontrado (1, 2, 3, 4, 5).

Nota: O array não tem números repetidos
Link to comment
Share on other sites

um tópico colocado desta maneira normalmente é respondido desta forma :

int main(int argc, char** argv)
{
 // o código que tens de fazer

 return 0;
}

aqui não se fazem trabalhos. se tiveres uma dúvida concreta, tas à vontade de a apresentar, caso contrário, tenho sérias dúvidas se o tópico não seja mesmo bloqueado

  • Vote 1
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Aqui está o codigo que desenvovli a minha dúvida é como retornar o valor de saída dos processos, para o processo que encontrar o numero e retornar zero para aqueles que não encontrão???

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <unistd.h>

#include <sys/wait.h>

#include <sys/types.h>

int main()

{

pid_t pid;

int v[1000];

int i, j, n=1000, status;

for(i=0; i<1001; i++)

v=i+1;

for(i=0; i<5; i++)

{

pid=fork();

if(pid==0)

{

for(j=250*i; j<250*(i+1); j++)

if(v[j]==n)

exit(j);

exit(1000);

}

}

for(i=0; i<5; i++)

{

wait(&status);

if(WEXITSTATUS(status)!=1000)

printf("O valor esta na posicao: %d\n", WEXITSTATUS(status));

}

return 0;

}

Link to comment
Share on other sites

Aqui está o codigo que desenvovli a minha dúvida é como retornar o valor de saída dos processos, para o processo que encontrar o numero e retornar zero para aqueles que não encontrão???

           for(j=250*i; j<250*(i+1); j++)
               if(v[j]==n)
                   exit(j);
           exit(1000);

e eu não percebo a tua dúvida se tens o código acima apresentado.

claro que o código está mal, mas se está lá é porque vei de algum lado

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.