从shell进行C ++输入重定向

时间:2012-05-30 22:11:48

标签: c++ linux shell input io-redirection

我确信这是一个简单的问题,但在用C ++创建一个模拟shell时,项目的一个方面我不太明白。

基本上,我们正在创建一个名为myShell的程序,使用命令“./myShell”调用。这将打开自定义shell,但我希望能够做的是,使用令牌“-c”从命令调用外部函数。

例如,命令:“。/ myShell -c ls -l”将调用linux ls函数。一旦实际调用程序,我就可以这样做,但不是之前(即打开./myShell,然后键入ls -l“。

我对流程很陌生,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

您有代码等待用户输入,解释它从用户读取的命令,运行它们,然后返回等待循环中的用户输入,如此伪代码:

int main(int argc, char *argv[]) {
    bool must_exit = false;
    while (!must_exit) {
        string input = read_user_input();
        must_exit = interpret_and_run(input);
    }
    return 0;
}

修改你的函数以连接argv并在进入循环之前运行它们:

int main(int argc, char *argv[]) {
    bool must_exit = false;
    if (argc > 2 && !strcmp(argv[1], "-c")) {
        string input = concatenate(argv); // From 1 to N, not from 0 to N
        must_exit = interpret_and_run(input);
    }
    while (!must_exit) {
        string input = read_user_input();
        must_exit = interpret_and_run(input);
    }
    return 0;
}