0

だから私はLinuxでプロセス間通信とプロセスを初めて使用するので、問題が何であるかを本当に理解できません。私が書いた次のプログラムは、凝縮されたパイプを使用することからなる宿題で私が抱えているのと同じ問題です。基本的に子から親へ一文字送るだけですが、文字を出力するわけではありません。
印刷します:

hello from child
sending a
hello from parent
trying to receive...
received: reaping child

3行目のどこに言うべきか

received: a

また、プログラム内の他の何かについて有益な批判があれば、どんな回答でも大歓迎です。みんな、ありがとう

#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>


int main(int argc, char* argv[])
{
    pid_t pid = fork();
    int comm[2];

    pipe(comm);

if (pid == 0)
{
    char send = 'a';
    int check;
    close(comm[0]);
    printf("hello from child\n");
    printf("sending %c\n", send);
    check =  write(comm[1], &send, 1);
    printf("%d\n", check);
    exit(1);
}
else if (pid > 0)
{
    char get = ' ';
    int check;
    close(comm[1]);
    printf("hello from parent\n");
    printf("trying to receive...\n");
    read(comm[0], &get, 2);
    printf("received: %c\n", get);
    printf("reaping child\n");
    wait(NULL);
    return 0;
}

return 0;

}
4

1 に答える 1

2

パイプとフォークの順番を間違えた!プロセスが分岐し、両方のプロセスがパイプを呼び出すため、2 つの別個のパイプが作成されます。あなたが書いているものには誰もそれを読んでおらず、あなたが読んでいるものには何も書かれていません。

于 2012-08-18T07:06:24.030 に答える