linux管道通信原理

简介: linux管道通信原理

管道,通常指无名管道,是 UNIX 系统IPC(InterProcess Communication)最古老的形式。

1、特点:

1.它是半双工的(即数据只能在一个方向上流动) ,具有固定的读端和写端

2.它只能用于具有亲缘关系的进程之间的通信(也是子进程或者兄弟进程之间)。

3.它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write 等函数。但是它不是普通的文件,并不属于其他任文件系统,并且只存在于内存中。


管道编程实例:

 

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
 
//    int pipe(int pipefd[2]);
 
int main()
{
    int fd[2];
 
    int pid;
 
    char buf[128];
 
    if(pipe(fd) == -1){
        printf("creat pipe failed\n");
    }
    pid = fork();
    
    if(pid<0){
        printf("creat child failed\n");
    }
    else if(pid > 0){
        sleep(3);
        printf("this is father\n");
 
        close(fd[0]);
        write(fd[1],"hello from father",strlen("hello form father"));
        wait();
    }else{
        printf("this is child\n");
        close(fd[1]);
        read(fd[0],buf,128);
        printf("read from father: %s\n",buf);
        exit(0);
    }
 
    return 0;
}
相关文章
|
14天前
|
存储 负载均衡 Linux
【Linux 系统】进程间通信(匿名管道 & 命名管道)-- 详解(下)
【Linux 系统】进程间通信(匿名管道 & 命名管道)-- 详解(下)
|
14天前
|
消息中间件 Unix Linux
【Linux 系统】进程间通信(匿名管道 & 命名管道)-- 详解(上)
【Linux 系统】进程间通信(匿名管道 & 命名管道)-- 详解(上)
|
14天前
|
Shell Linux 程序员
【Linux】Shell 命令以及运行原理
【Linux】Shell 命令以及运行原理
|
2天前
|
Linux Shell
【Linux】命名管道
【Linux】命名管道
|
2天前
|
Linux Shell
【Linux】管道
【Linux】管道
|
21天前
|
存储 Linux 程序员
【操作系统原理】—— Linux内存管理
【操作系统原理】—— Linux内存管理
|
2天前
|
Java Linux 应用服务中间件
【JavaEE进阶】 Linux常用命令
【JavaEE进阶】 Linux常用命令
|
1天前
|
编解码 Ubuntu Linux
linux 系统命令总结之ubuntu 系列命令 持续更新中
linux 系统命令总结之ubuntu 系列命令 持续更新中