brun_ri
(usa Ubuntu)
Enviado em 10/09/2015 - 17:12h
Olá amigos!
Sou iniciante em C e preciso de uma ajudazinha kkk preciso fazer um projeto para faculdade que consiste em um Interpretador de comandos para rodar no terminal linux .. ele funciona da seguinte forma: O usuário digita um comando (ls, cd, mv, etc) e o interpretador exibe na tela o resultado e grava o mesmo em um arquivo de log.
O professor pediu que usassemos processos, então usei a função fork()..
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
int recebe(){
char comando[80];
printf("\nDigite o comando que deseja executar:");
scanf("%s",comando);
system(comando);
};
int menu(){
int opcao = 0;
printf("\nDeseja executar um comando? \n1 - sim\n2 - não");
scanf("%d",&opcao);
return opcao;
};
int main(){
int opcao;
char comando[80];
pid_t pid;
pid = fork();
if(pid == 0){
printf("pid do filho %d",getpid());
opcao = menu();
while(opcao != 0){ // chama a função para execução do comando
if(opcao == 1){
recebe();
opcao = menu();
}else{
printf("Opcao inválida");
opcao = menu();
}
}
}else if(pid<0){
printf("Erro");
exit(1);
}else{
printf("pid do Pai: %d\n", getpid());
}
return 0;
}
O problema é que quando executo, ele não pede o comando que o usuário deve digitar... como se a função "scanf" do método recebe não funcionasse ..
alguém pode me ajudar?