"ls"또는 "ls -l"과 같은 간단한 쉘을 만들고 그것을 실행합니다.예상 'char **'하지만 인수는 'char *'유형입니다. --argv
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 *’
당신이 나에게 제대로 내 실행 함수에 인수를 전달하는 방법에 대한 몇 가지 포인터를 적어주세요 수 :
#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);
}
}
나는 다음과 같은 오류가 발생하고있다 :
여기 내 코드입니까?
누군가 xkcd 만화를 기억하는 포인터를 물어볼 때마다 ... – streppel