작동하지 않음) (포크 NOT 필요 "기능 구축", 그것은 포크 수()와() execvp는 부르지 만, 나는 최근에 추가. 여기 학생 쉘 - CD가 나는 간단한 리눅스 쉘에서 일하고 있어요
는 실행 처리입니다 :if (strcmp(cmd, "exit") == 0) {
exit = 1;
}
else if (builtIn(opt) == 0){
execvp(cmd, opt);
}
else {
pid_t pID = fork();
if (pID == 0) {
execvp(cmd, opt);
} else if (pID < 0) {
printf("\nFailed to fork\n");
} else {
wait(0);
}
}
내장() 단지 명령을 확인하고 반환 1 또는 0 :
int builtIn(char * opt[]) {
if (strcmp(opt[0], "cd")) {
return 1;
}
return 0;
}
왜 출구 검사 cmd' '에서 찾고있다? 'opt [0]'이 아닌'cd'에 대해서'cmd'를 검사해야 할 것 같습니다. – Unn
귀하의 질문은 무엇입니까? 코드가 정확히 무엇이며 어떻게 예상과 다른가? 죄송 –
, 내 코드가 엉망이다, cmd를 내가 명령이 execvp는 전달 된 옵션 배열()의 첫 번째 요소로 저장됩니다 모르는 경우에서 남은입니다. 명령은 작동하지만 (ls, cal 등), cd가 아닙니다. cd는 아무 것도하지 않으며, 나는이 문제를 해결할 포기하지 않기를 바랬다. – Will