Минишелл проблемы с CD (C)
Я сделал простой мини-оболочку в C, и она работает, за исключениемcd
команда. Когда я пытаюсь запустить его, ничего не происходит, за исключением того, что он создает дочерний процесс, который никогда не заканчивается. Например, после запуска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);
}
}
}