Linux下创建管道文件,并实现两个进程间的信息传递。

第一步创建管道文件:fifo.c

#include<stdio.h>

#include<stdlib.h>

#define PATH "/home/bencai/4-4/swap"

int main(int *argc,char **argv)

{

int ret;

ret=mkfifo(PATH,0644);

if(ret!=0)

{

printf("创建管道失败!\n");

exit(1);

}

printf("创建管道成功!\n");

return 0;

}

///////////////////////////////////////////////////////////////////

打开终端:

执行fifo文件,生成swap。

注意:第一执行成功后,如果再次执行,会显示创建失败,是因为4-4目录中已经有swap文件了。

/////////////////////////////////////////////////////////////////////

第二步,创建read.c文件:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<fcntl.h>//调用open()函数需要该头文件

#define PATH "/home/bencai/4-4/swap"

#define SIZE 128

int main(int *argc,char **argv)

{

int fd=-1;

printf("开始接收信息……\n");

for(;;)

{

fd=open(PATH,O_RDONLY);//打开管道文件

//printf("fd=%d\n",fd);

if(fd==-1)

{

printf("OPEN error!\n");

exit(1);

}

int ret;

char c,buffer[SIZE];

memset(buffer,'\0',sizeof(buffer));//清零操作

ret=read(fd,buffer,sizeof(buffer));//读取管道传送的内容

printf("接收到的信息为:%s\n",buffer);

//fd=0;

}

return 0;

}

///////////////////////////////////////////////////

第三步,创建write.c文件:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<fcntl.h>//调用open()函数需要该头文件

#define PATH "/home/bencai/4-4/swap"

#define SIZE 128

int main(int *argc,char **argv)

{

int fd=-1;

fd=open(PATH,O_WRONLY);//打开管道文件

if(fd==-1)

{

printf("OPEN error!\n");

exit(1);

}

printf("\n");

int ret;

char c,buffer[SIZE];

do

{

memset(buffer,'\0',strlen(buffer));//清零操作

scanf("%s",buffer);

ret=write(fd,buffer,strlen(buffer));//将输入的内容存放到butffer中

printf("发送的信息为:%s\n",buffer);

if(ret!=1)

printf("发送信息成功!\n");

c=getchar();

}while((c=getchar())!='N');

return 0;

}

/////////////////////////////////////////////////////

打开两个终端,一个执行read,一个执行write:

Linux下创建管道文件,并实现两个进程间的信息传递。_第1张图片 Linux下创建管道文件,并实现两个进程间的信息传递。_第2张图片 



(文章仅用于学习交流,欢迎转载,转载请注明来源http://hi.baidu.com/bzlixinhui)

你可能感兴趣的:(Linux下创建管道文件,并实现两个进程间的信息传递。)