Ir ao conteúdo

Posts recomendados

Postado

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;
	
}
      
   
	

 

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!