1

C言語でシェルのようなbashを実装しました。と をサポート< > >> ; |&ます。私の次のタスクは()基本的にサブシェルのサポートを追加することです。サブシェルを実装するにはどうすればよいですか。フォークして親を待機させ、環境変数を渡すことができますが、次のようなコマンドにサポートを追加する必要があります(ls | sort) ; ls(コマンドがあまり意味をなさないことは認めますが、動機は説明しています)

どんな助けでも大歓迎です。

4

1 に答える 1

0

これを実装するには、コマンド ラインを解析し、ツリーのような構造を作成します。これはlexandの助けを借りて行うことができyacc、バーマーが提案したように、各ノードにsubshell pipeline semicolon. コマンド ライン全体を解析した後、ノード全体へのポインタをメイン プログラムに渡します。サブシェルを実行し、現在の環境を渡してfork同じプログラムをリロードするには。execve

于 2012-09-03T17:59:35.393 に答える