0

最近 IPC について学び始めましたが、いくつか問題があります。次のように、パイプを介して通信する 2 つのプロセスを作成するプログラムを作成しました。

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <unistd.h>


int main(void)
{
    int pfds[2];
    char buf[30];
    pipe(pfds);
    if (!fork()) 
    {
        printf(" CHILD: writing to the pipe\n");
        write(pfds[1], "test", 5);
        printf(" CHILD: exiting\n");
        exit(0);
    } 
    else 
    {
        printf("PARENT: reading from pipe\n");
        read(pfds[0], buf, 5);
        printf("PARENT: read \"%s\"\n", buf);
        wait(NULL);
    }
    return 0;
}

潜在的なエラーを処理していないことをお詫びします。簡単にするためにこのように書きました。

これはうまく機能しますが、私の質問は次のとおりです。パイプを介して通信する2つのプログラム-サーバー/クライアント(2つの個別の実行可能ファイル-親プロセス/子プロセスの関係ではありません)を持つ可能性はありますか? FIFOを介してできるように?

ありがとうございました!

4

1 に答える 1

2

通常のパイプは、関連する 2 つのプロセスのみを接続できます。プロセスによって作成され、最後のプロセスがそれを閉じると消えます。

2 つの別個のプロセス間で通信するには、名前付きパイプ ( FIFO )を使用する必要があります。

于 2012-06-05T09:56:30.420 に答える