管道和FIFO例子

管道:

#include "unpipc.h"
int
main(int argc, char **argv)
{
        int fd[2];
        Pipe(fd);
        pid_t childpid;
        int n;
        if((childpid=Fork())==0){
                Close(fd[0]);
                char buf[2000];
                Fgets(buf,2000,stdin);
                Write(fd[1],buf,strlen(buf));
                exit(0);
        }
        Close(fd[1]);
        char buf[2000];
        if((n=Read(fd[0],buf,2000))<0)
                err_sys("error");
        Fputs(buf,stdout);
        waitpid(childpid,NULL,0);
        exit(0);
}
image.png

FIFO:

#include "unpipc.h"
#define FIFO_SERV "/tmp/fifo.lala"

int main(int argc,char **argv)
{
        if(mkfifo(FIFO_SERV,FILE_MODE)<0&&(errno!=EEXIST))
                err_sys("error");
        int writefd;
        writefd=Open(FIFO_SERV,O_WRONLY,0);
        char buf[2000];
        Fgets(buf,2000,stdin);
        Write(writefd,buf,strlen(buf));
        Close(writefd);
        exit(0);
}
#include "unpipc.h"
#define FIFO_SERV "/tmp/fifo.lala"
int
main(int argc, char **argv)
{
        if((mkfifo(FIFO_SERV,FILE_MODE))<0&&(errno!=EEXIST))
                err_sys("error");
        int readfd;
        readfd=Open(FIFO_SERV,O_RDONLY,0);
        char buf[2000];
        int n;
        if((n=Read(readfd,buf,2000))<0)
                err_sys("read error");
        Fputs(buf,stdout);
        Close(readfd);
        exit(0);
}
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 管道的概念 管道是一种最基本的IPC机制,作用于有血缘关系的进程之间(父子进程,爷孙进程,兄弟进程),完成数据传输...
    烫烫烫烫烫烫烫烫烫烫烫烫阅读 2,662评论 0 0
  • 本文摘抄自linux基础编程 管道指的是从一个进程连接数据流到另一个进程。它具有以下特点: 管道是半双工的,数据只...
    lintong阅读 8,867评论 0 8
  • 一般,进程之间交换信息的方法只能是经由fork或exec传送打开文件,或者通过文件系统。而进程间相互通信还有其他技...
    丶Em1tu0F阅读 5,268评论 1 1
  • 版权声明:本文为 cdeveloper 原创文章,可以随意转载,但必须在明确位置注明出处! FIFO 和 Pipe...
    登龙zZ阅读 4,453评论 0 4
  • 命名管道 (有用的特点): 由于它们出现在文件系统中,所以他们可以像平常的文件名一样在命令中使用。在创建的FIFO...
    helinyu阅读 4,977评论 0 1