Enviado em 17/11/2016 - 11:32h
Pessoal bom dia,#include <stdio.h> #include <stdlib.h> #include <unistd.h> void exibe(int filho, int num) { int rando=0; if (filho == 0) { printf ("Criando filho %d - %d\n", filho, getpid()); do { rando = rand() % 100000; if (rando == num) { printf ("\nFilho %d encontrou o numero %d primeiro.\n", filho, rando); exit(0); } } while (rando != num); } } void main() { int num=23584; // Este num seria o numero obtido por linha de comando exibe(0,num); if (fork() == 0) { exibe(1,num); system("sleep 3"); } else { if (fork() == 0) exibe(2,num); system("sleep 6"); } system ("sleep 10"); }
Enviado em 17/11/2016 - 13:59h
Enviado em 18/11/2016 - 11:48h
Enviado em 18/11/2016 - 13:48h
Confesso que fico tentado a dar uma resposta didática com código, mas não vou fazer isso.Enviado em 26/11/2016 - 14:18h
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <time.h> int fd[2]; void exibe(char filho[1], int num) { int rando=0; printf ("Criando filho %s - %d\n", filho, getpid()); do { rando = rand() % 10000000; if (rando == num) { write(fd[1],filho,1); exit(0); } } while (rando != num); } void main(int argc, char* argv[]) { int num = 0; num = atoi(argv[1]); pipe(fd); srand ((unsigned) time(NULL)); if (fork() == 0){ exibe("1", num); } else { if (fork() == 0) { exibe("2", num); } else { if (fork() == 0) { exibe("3", num); } else { char msg[1]; read(fd[0],msg,1); printf ("\nProcesso filho %s encontrou primeiro.\n", msg); } } } }
Enviado em 27/11/2016 - 08:53h
Usar módulo 1000000 não dá espaço equiprovável.Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!
Restaurando Fontes de Download do Hydra no Linux
Atualizando "na marra" o YT-DLP quando começa a dar erro de downloads
Como instalar o WPS com interface e corretor ortográfico em PT-BR no Arch Linux