1

これは簡単な質問だと思いますが、C ++でモックシェルを作成する際に、私が完全に理解していないプロジェクトの1つの側面があります。

基本的に、コマンド「./myShell」で呼び出されるmyShellというプログラムを作成しています。これでカスタムシェルが開きますが、私ができるようにしたいのは、トークン「-c」を使用してコマンドから直接外部関数を呼び出すことです。

たとえば、コマンド「./myShell -c ls -l」は、linuxls関数を呼び出します。プログラムが実際に呼び出されたらこれを行うことができますが、それ以前はできません(つまり、。/ myShellを開いてから、ls-l"と入力します。

私はプロセスに不慣れであり、どんな助けもいただければ幸いです。

4

1 に答える 1

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;
}

関数を変更してargvsを連結し、ループに入る前に実行します。

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;
}
于 2012-05-30T22:25:34.500 に答える