Interpretador de Comandos em C [RESOLVIDO]

1. Interpretador de Comandos em C [RESOLVIDO]

Bruno R.
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?


  


2. Re: Interpretador de Comandos em C

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 10/09/2015 - 17:36h

Amigo, faça algo assim:


#include <sys/wait.h>

[...]
else{
printf("pid do Pai: %d\n", getpid());
int status;
(void)waitpid(pid, &status, 0);
}



E recomendo dar uma lida nisso: https://en.wikipedia.org/wiki/Fork_%28system_call%29#Example_in_C

Espero ter ajudado

[]'s

T+

--

body@human: $ sudo su
brain@human: # apt-get purge -y windows* && echo "Windows removed successfully"




3. Deu certo! :D

Bruno R.
brun_ri

(usa Ubuntu)

Enviado em 14/09/2015 - 15:33h


Isso ai, obrigado :)


4. Re: Interpretador de Comandos em C [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 14/09/2015 - 15:36h

Dá uma lida nisto aqui: http://www.vivaolinux.com.br/script/Usando-a-biblioteca-readline e https://pt.wikipedia.org/wiki/GNU_readline

--
http://s.glbimg.com/po/tt/f/original/2011/10/20/a97264_w8.jpg

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts