한 줄에 여러 명령으로 명령 줄 인터프리터를 작성하고 싶습니다.명령 줄 인터프리터에서 한 줄에 여러 명령 사용
나는 한 줄에 하나의 comamnd에서 작동하는 프로그램을 만들었지 만, 더 많은 명령을 입력하지 않으면 comamnds가 다음과 같이 입력됩니다. ls -l; pwd; 고양이 파일; 그렇소.
먼저 내가 인수를 구문 분석, 난 배열에 넣어 그리고 난이 기능이 있습니다
pid_t pid;
pid = fork();
switch(pid) {
case -1:
printf("DEBUG:Fork Failure\n");
exit(-1);
case 0:
execvp(cmd[j], cmd);
if(execvp(cmd[j], cmd) == -1) {
printf("Command Not Found\n");
exit(0);
}
default:
wait(NULL);
printf("DEBUG:Child Finished\n");
}
내 파서입니다 :
printf("shell> ");
fgets (input, MAX_SIZE, stdin);
if ((strlen(input)>0) && (input[strlen (input) - 1] == '\n')) {
input[strlen (input) - 1] = '\0';
}
printf("INPUT: %s\n", input);
cnd = strtok(input, " ;");
int i = 0;
while(cnd != NULL) {
cmd[i] = cnd;
i++;
cnd = strtok(NULL, ";");
나는 내 문제를 해결하기 위해 파이프를 사용해야한다고 생각 ,하지만 어떻게? 아이디어가 있으십니까?
죄송합니다 나쁜 영어
하나의 명령이 올바르게 구문 분석되지만 여러 명령이 올바르게 해석되지 않으면 파서에 문제가있는 것입니다. 당신은 당신의 파서를 보여주지 않습니다 ... – StoryTeller