プロセス間通信名前付きパイプ

名前付きパイプ(FIFO)は、プロセス間通信の方法です。

API:

int型はmkfifo(のconst  のchar *のパス名、mode_tモード)。

デモ:

// 写进程
INTメイン(int型 ARGC、チャー ** ARGV){
     チャーファイル名[] = " / TMP / my_fifo " もし(はmkfifo(ファイル名、0777)< 0 ){ 
        perrorは(" はmkfifoエラー" )。
        出口(1 )。
    } 
    int型 FD = オープン(ファイル名、O_WRONLY)。
    チャーバッファー[ 128 ] = " Hello Worldの" ; 
    書き込み(FD、バッファ、strlenを(緩衝液))。
    printf(" 行って\ Nを書きます" );
    リターン 0 ; 
} 

// 读进程
INTメイン(int型 ARGC、チャー ** ARGV){
     チャーファイル名[] = " / TMP / my_fifo " int型のfd = オープン(ファイル名、O_RDONLY);
    チャーバッファー[ 128 ]。
    INT、N =読み取る(FD、バッファ、128 )。
    バッファ[N] = ' \ 0 ' 
    printf(" 入力された:%のSの\ n " 、バッファ);
    リターン 0 ; 
}

注意すべき二つのこと:

1.はmkfifo my_fifoは、/ tmpディレクトリ内のファイルを作成します

2.開いているプロセスを読む前に、書き込み処理がブロックされています

   (それはあなたがそれに任意の入力または出力操作を行うに進むことができます前に、同時に両端にオープンにする必要があります。)

 

そしてパイプ比較名前付きパイプは、2つのプロセス間の任意の通信のために使用することができます。

ます。https://www.cnblogs.com/gattaca/p/6547580.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33881050/article/details/93519920