您的位置:首页 > 运维架构 > Linux

FIFO管道通信(linux)

2016-07-21 14:42 369 查看
程序运行前需在linux中使用mkfifo 建立一个管道文件
fifo适合进程间通信

fifowrite.cpp

#include<sys/stat.h>

#include<cstdio>

#include<cstring>

#include<sys/types.h>

#include<iostream>

#include<unistd.h>

#include<cstdlib>

#include<fcntl.h>

void sys_err(const char *str)

{

    perror(str);

    exit(-1);

}

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

{

    int fd,i;

    char buf[1024];

    if(argc < 2)

    {

        std::cout<<"execname filename"<<std::endl;

        return -1;

    }

    fd = open(argv[1],O_WRONLY);

    if(fd < 0)

    {

        sys_err("open");

    }

    i = 0;

    while(1)

    {

        sprintf(buf,"hello %d\n",i++);

        write(fd,buf,strlen(buf));

        sleep(1);

    }

    close(fd);

    return 0;

}

piforead.cpp

#include<sys/stat.h>

#include<cstdio>

#include<cstring>

#include<sys/types.h>

#include<iostream>

#include<unistd.h>

#include<cstdlib>

#include<fcntl.h>

void sys_err(const char *str)

{

    perror(str);

    exit(-1);

}

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

{

    int fd,len;

    char buf[1024];

    if(argc < 2)

    {

        std::cout<<"execname filename"<<std::endl;

        return -1;

    }

    fd = open(argv[1],O_RDONLY);

    if(fd < 0)

    {

        sys_err("open");

    }

    len = 0;

    while(1)

    {

        len = read(fd,buf,sizeof(buf));

        write(STDOUT_FILENO,buf,len);

        sleep(1);

    }

    close(fd);

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  FIFO 管道 linux