#有名管道之间的通信

//1. 创建有名管道
//2. 本进程执行循环等待数据被写入到管道中并读有名管道
//3. 打开有名管道并写数据到名管道
//create_fifo.c

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <string.h>
#include <errno.h>
int main(int argc,char **argv)
{
    if(argc<2)
    {
        fprintf(stdout,"Usage:%s<filename>\n",argv[0]);
        exit(-1);
    }
    if(mkfifo(argv[1],0644)<0)
    {
        fprintf(stderr,"mkfifo()failed:%s\n",strerror(errno));
        exit(-1);
    }
    return 0;
}

//xieguandao.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
#define BUFFER_SIZE 1024
int main(int argc,char **argv)
{
    int fd;
    if(argc<2)
    {
        fprintf(stdout,"Usage:%s<filename>\n",argv[0]);
        exit(-1);
    }

    if((fd=open(argv[1],O_WRONLY))<0)
    {
        fprintf(stderr,"open fifo %s for writtinng failed:%s\n",argv[1],strerror(errno));
        exit(-1);
    }
    fprintf(stdout,"open fifo %s for writting successed.\n",argv[0]);
    char buffer[BUFFER_SIZE];
    ssize_t n;
    while(fgets(buffer,BUFFER_SIZE,stdin))
    {
        if((n=write(fd,buffer,strlen(buffer)+1))<0)
        {
            fprintf(stderr,"write()failed on fifo:%s\n",strerror(errno));
            break;
        }
    }
    return 0;
}

//duguandao.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>

#define BUFFER_SIZE 1024

int main(int argc,char **argv)
{
    int fd;

    if(argc<2)
    {
        fprintf(stdout,"Usage:%s<filename>\n",argv[0]);
        exit(-1);
    }
    if((fd=open(argv[1],O_RDONLY))<0)
    {
        fprintf(stdout,"open fifo %s for reading failed:%s\n",argv[1],strerror(errno));
        exit(-1);
    }

    fprintf(stdout,"open fifo %s reading successed.\n",argv[0]);

    char buffer[BUFFER_SIZE];
    ssize_t n;
    while(1)
    {
        if((n=read(fd,buffer,BUFFER_SIZE))<0)
        {
            fprintf(stderr,"read failed on %s:%s\n",argv[1],strerror(errno));
            exit(-1);
        }
        else if(n==0)
        {
            fprintf(stderr,"peer closed fifo.\n");
            break;

        }
        else
        {
            fprintf(stdout,"%s\n",buffer);
        }
    }

    return 0;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
5271次浏览 51人参与
# 百度工作体验 #
316368次浏览 2232人参与
# 米连集团26产品管培生项目 #
7697次浏览 235人参与
# 沪漂/北漂你觉得哪个更苦? #
1855次浏览 44人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
16947次浏览 137人参与
# 春招至今,你的战绩如何? #
16826次浏览 153人参与
# MiniMax求职进展汇总 #
25456次浏览 323人参与
# 你的实习产出是真实的还是包装的? #
3534次浏览 59人参与
# HR最不可信的一句话是__ #
1213次浏览 33人参与
# AI面会问哪些问题? #
1079次浏览 29人参与
# 你做过最难的笔试是哪家公司 #
1432次浏览 24人参与
# AI时代,哪个岗位还有“活路” #
3111次浏览 54人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
153000次浏览 889人参与
# 简历第一个项目做什么 #
32257次浏览 369人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
8075次浏览 43人参与
# 简历中的项目经历要怎么写? #
311326次浏览 4284人参与
# XX请雇我工作 #
51168次浏览 171人参与
# 投格力的你,拿到offer了吗? #
178453次浏览 891人参与
# 你最满意的offer薪资是哪家公司? #
77046次浏览 375人参与
# AI时代,哪些岗位最容易被淘汰 #
65036次浏览 915人参与
# 秋招白月光 #
731620次浏览 5439人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187708次浏览 1123人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务