0

Cで簡単なミニシェルを作成しましたが、コマンドを除いて機能しcdます。実行しようとしても、実際には終了しない子プロセスが作成される以外は何も起こりません。たとえば、ミニシェルで実行した後、ミニシェルを終了するには、標準の 1 回ではなく 2 回cd入力する必要があります。exitコード: int debug=0;

void safeQuit(){
    if (debug==1)
      printf("INFO: Parent process, pid=%d exiting.\n", getpid());
    exit(0);
}

    int main(int argc,char** argv) 
    {
    int pid, stat;
    char * Array_arg[50]; 
    char command_line[200];//user input
    if (argc>1)
      if (strcmp(argv[1],"-debug")==0)
        debug=1;
    while (1){
      printf("[minishell]> "+debug);
      gets(command_line);
      if (strcmp(command_line,"exit")==0)
        safeQuit();
      char * subcommand=strtok(command_line," ");  //divides the string according to the spaces
      int i=0;   
      while (subcommand!= NULL)//insert to array
      {
        Array_arg[i]=subcommand;
        subcommand=strtok(NULL," ");
        i++;
      } 
  Array_arg[i]='\0';
      if (fork()==0){
        if (debug==1)
          printf("INFO: child process, pid = %d, executing command %s\n", getpid(), command_line);
        execvp(Array_arg[0],Array_arg); //execution of cmd
      }
      else{
        pid=wait(&stat);
  }
    }
}
4

1 に答える 1