ls: 해당 파일이나 디렉터리가 없습니다. 오류

ls: 해당 파일이나 디렉터리가 없습니다. 오류

저는 학교를 위한 매우 기본적인 쉘을 작성하고 있습니다. 시도하면 "pwd" 또는 "date"와 같은 명령도 작동합니다."엘"그것은 나에게 말한다 "ls: 해당 파일이나 디렉터리가 없습니다. 오류"

내 쉘 코드는 다음과 같습니다.

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
int i;
char *line=(char *) malloc(1024*sizeof(char));

 while (1) {
   /* Print the command prompt */
   printf("$ ");
   fflush(stdout); /* Anagazei na trexei thn printf
   /* Read a command line */
   fgets(line, 1024, stdin);
  for(i=0;i<1024;i++){
   if(line[i]=='\n')
         {
           line[i]='\0';
         }
  }
  //printf("%s", line);
   pid_t pid = fork(); /* Dhmiourgei paidi. antigrafo diergasias. */
     if (pid==0){

           execlp(line,line);
      }
     else waitpid(pid,0,0);

  }
}

답변1

execlp 매뉴얼 페이지를 주의 깊게 읽어 보십시오:

매개변수 목록은 NULL 포인터로 끝나야 하며, 가변 함수이므로 포인터를 (char *) NULL로 캐스팅해야 합니다.

이 줄을 사용하면 나에게 도움이 되었습니다.

execlp(line,line, (char*) NULL);

또한 코드에서는 다음 줄에 대해 경고(GCC 사용)를 제공합니다.

a.c: In function ‘main’:
a.c:26:12: warning: not enough variable arguments to fit a sentinel [-Wformat=]
            execlp(line,line);
            ^

관련 정보