私は、1行に複数のコマンドを含むコマンドラインインタープリターを書きたいと思っています。コマンドラインインタプリタ(1行に複数のコマンドがある)
私は1行あたり1つのcomamndで動作するプログラムを書いたが、もっと多くのコマンドを入力した場合、comamndsは次のように入力される。 pwd; catファイル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, ";");
私は私は私の問題を解決するためのパイプを使用しなければならないと思いますしかし、どのように? アイデア
悪い英語
1つのコマンドが正しく解析されますが、複数のコマンドが正しく解析されない場合、パーサーに問題があります。あなたはパーサーを表示しません... – StoryTeller