erwartet, 'char **' but argument is of type 'char *' --argv

Ich bin versucht, zu erstellen eine einfache Schale, die etwas wie "ls" oder "ls -l" und führt es für mich.

Hier ist mein code:

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

void execute(char **argv)
{
  int status;
  int pid = fork();
  if ((pid = fork()) <0)
     {
       perror("Can't fork a child process\n");
       exit(EXIT_FAILURE);
     }
  if (pid==0)
     {
    execvp(argv[0],argv);
        perror("error");
     }
  else
     {
      while(wait(&status)!=pid) 
         ;
     }


}

int main (int argc, char **argv)

{

   char args[256];
   while (1)
   {
      printf("shell>");
      fgets(args,256,stdin);
      if (strcmp(argv[0], "exit")==0)
             exit(EXIT_FAILURE);
      execute(args);
   }

}

Ich erhalte die folgende Fehlermeldung:

basic_shell.c: In function main’:
basic_shell.c:42: warning: passing argument 1 of execute from incompatible pointer type
basic_shell.c:8: note: expected char **’ but argument is of type char *’

Können Sie mir bitte einige Hinweise, wie die korrekte übergabe von Argumenten, um meine Funktion ausführen?

  • wenn ich sehe, wie jemand fragte, was für ein Zeiger, den ich erinnere mich, dass xkcd-comic...
InformationsquelleAutor Mona Jalal | 2013-09-25
Schreibe einen Kommentar