• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

granwizzard

Ajuda com o Codigo.

2 mensagens neste tópico

Boas precisava de ajuda com este codigo pois não estou a perceber pq que não executa os comandos eo execvp retorna sempre -1.

Alguma sugestão que possa ajudar ou mesmo rectificar o codigo.

Obrigado.

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>



void executar(char **args)
{
int status;
pid_t pid;
pid =fork();
int retorno;

   if(pid <0)
  {	   	
   printf("Fork Error, Sorry ");
   exit(1); 
  }	

           if(pid==0)
           { 
     execvp(*args, args);
     //printf("Erro: Comando nao executado\n");	 
     printf("%d\n", retorno=execvp(*args, args)); //para verificar o que esta a retornar  
             exit(1);         
           }

   while(wait(&status)!=pid);

}

int verificacao( char *cmd, char **args)
{
         while (*cmd!='\0')
     {
	   if(*cmd == ' ' || *cmd =='\t' || *cmd=='\n')
		{

            		  *cmd++ =NULL;
		}
            		  *args++ = cmd;

            if(*cmd !='\0'&& *cmd !='\t' && *cmd !='\n'){

	cmd++;}
     }
     *args=NULL;
}

main(void)
{
    char cmd[80];
    char *args[20]; 
    int i=0;


for (i;i==0;) // loop sem fim
         {
           printf(">> ");
      if (fgets(cmd,80,stdin) == NULL)
    {
              	  printf("\n");
                  exit(1);
    }
  verificacao(cmd, args);
	  if (args[0]=="terminar")
              exit (0);	
  executar(args);

         } 
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já descobri a razão do erro.

:D

Porquê que se usar o gets o problema é ultrapassado e om o fgets não?

Visto que o gets é uma grande falha

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora