Enviado em 27/05/2016 - 17:50h
Olá pessoal, estou fazendo um trabalho no qual eu preciso fazer um gerenciador de processos em c. Nele preciso criar processos e imprimir cada PID na tela, mas estou com dificuldade para administrar os processos. Quando eu escolho a opção de imprimir os processos não acontece nada e não consegui descobrir o que é. Segue o que consegui fazer:#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
#include <string.h>
int **pipefd;
void filho(int *pipe)
{
pid_t buf;
close(pipe[1]);
while(read(pipe[0],&buf,256) > 0)
printf("%d",buf);
}
int main(){
pid_t *processos;
int num, opc,i,b;
do{
printf("Digite 1 para criar novos processos:\n");
printf("Digite 2 para imprimir os processos existentes:\n");
printf("Digite 9 para sair:\n");
scanf("%d",&opc);
switch(opc){
case 1:
printf("Digite o número de processos a serem criados:\n");
scanf("%d",&num);
pipefd = (int**)malloc(sizeof(int*)*num);
processos = malloc(num*sizeof(int));
for(i = 0;i<num;i++){
pipefd[i] = (int*) malloc(sizeof(int)*2);
pipe(pipefd[i]);
processos[i] = fork();
if(processos[i] == 0){
filho(pipefd[i]);
}
}
break;
case 2:
for(i = 0;i<num;i++){
close(pipefd[i][0]);
b = processos[i];
write(pipefd[i][1],&b,sizeof(int));
if(processos[i] == 0)
filho(pipefd[i]);
}
break;
}
}while(opc!=9);
return 0;
}
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Dica para encontrar diversos jogos Indies criativos
Instalando Discord no Debian 13
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
A escola é altamente ineficiente e ineficaz! (13)
Sincronização Horario Estação de trabalho máquinas domínio com samba N... (2)