c - Cでパイプを作成する[複製]

c shell unix pipe

Possible Duplicate:
Pipe in C UNIX shell




私は2つの子プロセス間にパイプを作成しようとしました:
Child1はパイプへの入力と出力を閉じます
Child2は出力を閉じ、入力を受け入れます。

        pipe(&fd[0]);                               //Create a pipe
        proc1 = fork();

        //Child process 1
        if (proc1 ==  0)
        {
            close(fd[0]);                           //process1 doenst need to read from pipe
            dup2(fd[1], STD_OUTPUT);
            close(fd[1]);
            execvp(parameter[0], parameter);        //Execute the process
        }

        //Create a second child process
        else
        {
            //Child process 2
            proc2 = fork();
            if (proc2 == 0)
            {
                close(fd[1]);
                dup2(fd[0], STD_INPUT);
                close(fd[0]);
                execvp(parameter2[0], parameter2);
            }
            //Parent process
            else
            {
            waitpid(-1, &status, 0);            //Wait for the child to be done
            }
        }


しかし、どこかで問題が発生し、正確な場所がわかりません(エラーはなく、論理エラーです)。
答え
パイプは後方です。 fd[1]は書き込み用、fd[0]は読み取り用です。

補足:pipe(&fd[0]);は少し奇妙に見えます... pipe(fd);は同等ですが、(私の目には)はっきりしています。
関連記事

objective-c - 同じコンカレントキューからdispatch_sync内でdispatch_applyが呼び出されたときに内部で何が発生するか

c - C++ベクトルの最高のC実装は何ですか?

c - AIX 6.1:警告:重複したシンボル:

c - 定義されている場合(__AIX)はAIX 6.1で動作しませんか?

c - 「異なるサイズの整数からポインタへのキャスト」とはどういう意味ですか?

c - LIFOの順序ではなく、アドレスの順序でフリーリストを整理する利点は何ですか?

c++ - C++でのCライブラリ関数の実装

c - malloc実装での空きリストの維持

c - Cのファイルから数値を読み取る

c - すでに印刷されている改行を削除するVT100エスケープシーケンス?