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);
            ^

関連情報