c_cpp Linux下IPC通信之有名管道fifo示例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp Linux下IPC通信之有名管道fifo示例相关的知识,希望对你有一定的参考价值。
//fifo文件的读操作
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,char *argv[])
{
if(argc != 2){
printf("./a.out filename\n");
return -1;
}
int fd = open(argv[1],O_RDONLY);
if(fd < 0){
perror("open fifo err");
exit(1);
}
char buf[256];
while(1){
//循环读数据
memset(buf,0x00,sizeof(buf));//清空buf
int ret = read(fd,buf,sizeof(buf));
if(ret > 0){
//代表读到数据
printf("read:%s\n",buf);
}
}
close(fd);
return 0;
}
//fifo文件的写操作
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,char *argv[])
{
if(argc != 2){
printf("./a.out filename\n");
return -1;
}
printf("begin open fifo...\n");
int fd = open(argv[1],O_WRONLY);//打开fifo文件
if(fd < 0){
perror("open fifo err");
exit(1);
}
printf("end open fifo...\n");
char buf[256]={0};
int i = 0 ;
while(1){
//循环写入文件
memset(buf,0x00,sizeof(buf));//清空buf
sprintf(buf,"hello%04d",i++);
write(fd,buf,strlen(buf));//写入文件
sleep(1);
}
close(fd);//关闭fifo文件
return 0;
}
以上是关于c_cpp Linux下IPC通信之有名管道fifo示例的主要内容,如果未能解决你的问题,请参考以下文章
操作系统之三Linux下进程间通信-IPC(Inter-Process Communication)
深刻理解Linux进程间通信(IPC)
深刻理解Linux进程间通信(IPC)
IPC 进程间通信
IPC之套接字
c_cpp Linux下IPC通信之共享映射区mmap示例