Linuxプロセス通信FIFO

1701 ワード

Linuxプロセス通信FIFO


FIFOは有名なパイプとも呼ばれ、ファイルシステムで見られるファイルタイプです.プログラムでファイルstat構造のst_を表示できますmodeメンバーの値は、ファイルがFIFOファイルであるかどうかを判断します.FIFOファイルを作成するのはファイルを作成するのと同じで、FIFOファイルは普通のファイルのようです
FIFOでは、無関係プロセス間のデータ交換の要件をうまく解決することができ、ファイルシステムに存在するため、匿名パイプよりも持続的に安定した通信方法を提供する.
.
FIFOの通信方式は、プロセスでファイルを使用してデータを伝送するのと同様であるが、FIFOタイプのファイルはパイプの特性を同時に有する.データ読み出し時に、FIFO配管で同時にデータをクリアします.shellではmkfifoコマンドで有名なパイプを構築できます.

次に、FIFOを理解するための例を示す。

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "clist.h"
#include "clist.c"

int main(int argc, char *argv[])
{
	if(mkfifo(argv[1], 0666) == -1)
	{
		if(EEXIST == errno)
			goto l;
		else
		{
			perror("mkfifo");
			exit(-1);
		}
	}

	l;
	int my_fd;
	my_fd=open(argv[1], O_RDONLY);
	if(NULL == my_fd)
	{
		perror("open");
		exit(-1);
	}

	int my_service;
	my_service=open(argv[1],O_RDONLY);
	if(NULL == my_service)
	{
		perror("my_service");
		exit(-1);
	}

	void *fun(void * a)
	{
		;		
	}

	head_online=
	
	pthread_t pid;
	if(pthread_create(&pid, NULL, fun, &my_fd) < 0)
	{
		perror("pthread_creat");
		exit(-1);
	}
	MSG buf;
	sprintf(buf, "hello!");
	write(my_service, buf, sizeof buf);
	
}

私はプログラマーが好きで、彼らは単純で、頑固で、達成感を体得しやすいです.プレッシャーに直面して、明かりを選んで夜戦して眠らないことができます;困難に直面して、困難を迎えて自分に挑戦することができます.彼らも困惑し、彷徨うだろうが、プログラマーの心の中にはビル・ゲイツやジョブズの夢がある.「知恵で自分の事業を切り開く」.私が言いたいのは、実は私はプログラマーです.

syw_selfimpr新浪微博アドレス:http://weibo.com/u/2945271402


もし本文があなたに役に立つと思ったら、「トップ」をクリックして支持してください.あなたの支持は私の書く最大の動力です.ありがとうございます.