1

次のコマンドを実装しようとしていますが、

ls | grep "SOMETHING"

Cプログラミング言語で. 誰でもこれで私を助けてくれませんか。

child を fork したいのですが、execlp を使用して ls コマンドを実行します。親では、子と grep の出力を取得します (もう一度 execlp を使用します)。

それは不可能ですか?

4

2 に答える 2

9

私はついにそのコードを見つけました。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
int pfds[2];
pipe(pfds);
if (!fork()) {
    close(1);       /* close normal stdout */
    dup(pfds[1]);   /* make stdout same as pfds[1] */
    close(pfds[0]); /* we don't need this */
    execlp("ls", "ls", NULL);
} else {
    close(0);       /* close normal stdin */
    dup(pfds[0]);   /* make stdin same as pfds[0] */
    close(pfds[1]); /* we don't need this */
    execlp("grep", "SOMETHING", NULL);
}
return 0;
}
于 2013-07-14T08:32:55.953 に答える
3

パイプは、1 つの stdout から読み取られ、他の stdin に書き込まれます。
パイプ機能を備えたシェル インタープリターを実装しますか?
まず、コモンドを解析するためのシェル パーサーが必要です。
次に、パイプ ライン フィーチャを作成します。
...

于 2013-06-18T10:51:29.083 に答える