Linux C プログラミング - パイプ

高洛峰
リリース: 2016-12-13 11:37:19
オリジナル
1478 人が閲覧しました

Linux では、パイプもファイルの一種ですが、パイプ関数を使用してパイプを作成でき、そのプロトタイプは次のように宣言されます:

#inlcude

int Pipe(int field[2] );

実際には通信バッファに相当し、fields[0]は読み取りに使用され、fields[1]は書き込みに使用されます。次の例では、パイプが通信バッファとして作成され、子プロセスはパイプのフィールド[1]記述子を介してパイプに文字列を書き込みます。親プロセスはフィールド[を使用します。 1] パイプから次の文字列を読み取って表示します:

#include
#include
#include
#include < ;string.h> ;
#include
#include
#include

#define BUF_SIZ 255 // メッセージバッファサイズ

int main(int argc , char **argv)
{
charbuffer[BUF_SIZ + 1];
int fd[2];

// パラメータとして文字列を受け取ります
if (argc != 2)
{
fprintf ( stderr, "Usage : %s stringna", argv[0]);
exit(1);
}

// 通信用のパイプを作成します
if (pipe(fd) != 0)
{
fprintf(stderr, "パイプエラーの作成: %sna", strerror(errno));
exit(1);
}

if (fork() == 0) // 子プロセスでパイプにメッセージを書き込みます
{
close(fd [0]);
printf("子 %ld write to Pipena", getpid())
snprintf(buffer, BUF_SIZ, "%s", argv[1]);
write(fd[1], バッファ, strlen(buffer)) ; T Printf ("Child%ld quit.na", getpid ());
}
else // 親プロセスで、Pipe から MSG を読み取ります
{
Close (fd [1]); Pipena", getpid());
memset(buffer, '

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート