我想寫一個每行有多個命令的comamnd行解釋器。每行有多個命令的命令行解釋器
我在C中編寫了一個程序,它每行有1個comamnd,但是如果我輸入更多的命令不工作,comamnds會像下面這樣輸入:ls -l; pwd;貓文件; LS。
首先我解析指定參數時,我把它們放到數組和我有這個功能:
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