Я создаю простую оболочку Unix на C. Я использую fork () для клонирования процесса и exec для выполнения нового. Он отлично работает, когда вы вводите данные впервые в оболочке. Но когда он приходит, вторая итерационная вилка возвращает -1.
например,
...> ls -l /
/ результаты здесь /
...> ls -l /
неудачное разветвление
часть кода:
int execute(char path[80],char *args[]){
pid_t pid;
if((pid=fork())<0){
printf("forking failed"); // The forking failed due to Cannot allocate memory error
exit(0);
}else if(pid==0){
execv(path,args);
}else{
wait(NULL);
}
return 0
}
где path это "bin / ls" и аргументы "ls", NULL
главное выглядит
int main(){
while(1){
//read from keyboard
//find the program path
//fill args
execute(path,args);
}
}