1. 程式人生 > >管道實驗(三)

管道實驗(三)

編寫程式實現以下功能:

利用有名管道檔案實現程序間通訊
要求寫程序向有名管道檔案寫入10次“hello world”
讀程序讀取有名管道檔案中的內容,並依次列印。

 

有名管道的特點:

1.有名管道支援讀寫操作,並且存在於檔案系統中

2.能夠使用使用read和write直接對有名管道進行操作。

3.有名管道是雙向管道。

4.可以用於任意程序間的通訊,不像匿名管道具有侷限性。

我們能夠像操作一個檔案一樣操作有名管道。

實驗程式碼:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>
int main()
{
	int pid,fd;
	if(mkfifo("fifotest",0666) < 0)
	  perror("mkfifo");

	pid = fork();
	
	if(pid < 0)
	  perror("fork");
	else if(pid == 0)
	{
		printf("This is the write process!\n");
		int fd = open("fifotest",0666);

		for(int i = 0; i < 10;i++)
		{
			if(write(fd,"hello world",12) < 0)
				perror("write");
			sleep(1);		
		}
		close(fd);
	}
	else
	{
		char str[128];
		printf("This is the read process!\n");
		int fd1 = open("fifotest",0666);

		for(int i = 0;i < 10;i++)
		{
			if(read(fd1,str,128) < 0)
			  perror("read");
			else
			  printf("%s\n",str);
		}
		system("rm -f fifotest");
	}
}

實驗結果:

實驗完成。