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示例