美文网首页Linux
进程间通信(3)-有名管道

进程间通信(3)-有名管道

作者: 3e1094b2ef7b | 来源:发表于2017-05-08 21:15 被阅读15次

正由于这无名管道的缺点,对无名管道进行改进:有名管道。
所谓的有名,即文件系统中存在这个一样文件节点,每一个文件节点都有一个inode号
而且这是一个特殊的文件类型:p管道类型。

  1. 创建这个文件节点,不可以通过open 函数,open 函数只能创建普通文件,不能创建特殊文件(管道-mkdifo,套接字-socket,字符设备文件-mknod,块设备文件-mknod,符号链接文件-ln –s,目录文件mkdir)

  2. 管道文件只有inode号,不占磁盘块空间,和套接字、字符设备文件、块设备文件一样。普通文件、符号链接文件及目录文件,不仅有inode号,还占磁盘块空间。

  3. mkfifo 用来创建管道文件的节点,没有在内核中创建管道。
    只有通过open 函数打开这个文件时才会在内核空间创建管道。

int mkfifo(const char *filename, mode_t mode);
   功能:创建管道文件
   参数:管道文件文件名,权限。
   创建的文件权限仍然和掩码umask有关系。
   返回值:创建成功返回0,创建失败返回-1。

例1:mkfifo的用法。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main()
{
    int ret;
    ret = mkfifo("./myfifo", 0777);
    if(ret < 0)
    {
        printf("create myfifo fail\n");
        return -1;
    }
    printf("create myfifo success\n");

    return 0;
}
创建管道文件成功,而且管道文件不占磁盘块空间 代码中权限是777,但是被umask掩掉了,因此是775

例2:通过管道实现无亲缘关系进程间通信

相关文章

  • 进程间通信(3)-有名管道

    正由于这无名管道的缺点,对无名管道进行改进:有名管道。所谓的有名,即文件系统中存在这个一样文件节点,每一个文件节点...

  • Linux进程间通信

    Linux进程间通信的概念 linux下进程间通信的几种主要手段简介: 管道(Pipe)及有名管道(named p...

  • 进程间通信方式

    管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字...

  • 进程通信方式

    1、管道与有名管道管道可用于具有亲缘关系的父子进程间通信,有名管道除了具有管道的特点外,还允许无亲缘关系的进程进行...

  • PHP进程间通信--消息队列

    前面介绍了怎么通过消息管道(有名消息管道)进行进程间通信,下面介绍如何通过消息队列实现进程间通信。 首先我们来看一...

  • 系统编程(4)

    哲学家就餐问题: 进程间通信 无名管道,需要亲子进程来实现 利用有名管道产生不同窗口的本地聊天 共享内存间通信,使...

  • LInux进程之间的通信-有名管道(FIFO)

    Linux进程间的通信-有名管道FIFO 管道的通信只能存在于具有亲缘关系的进程之间,比如fork出来的子进程与父...

  • 14.进程间通信:管道

    1. 管道,有名管道和无名管道。 1.1 无名管道主要用于父子进程或者兄弟关系的进程间的通信。通过pipe创建无名...

  • 使用os pipe管道使python fork多进程之间通信

    管道(pipe) 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功...

  • 线程-进程间通信(操作系统、java、android)最全总结!

    大纲 操作系统进程间通信 进程的通信机制主要有:管道、有名管道、消息队列、信号量、共享空间、信号、套接字。 操作系...

网友评论

    本文标题:进程间通信(3)-有名管道

    本文链接:https://www.haomeiwen.com/subject/mesvtxtx.html