linux系统编程--管道基础

0进程之间共享文件

//父
if(pid>0){
	char *p="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
		write(fd,p,strlen(p));
}
//字
else{
	sleep(1);
	char buf[1024];
	//因为父进程写完就到了文件末位,所以要把文件指针偏移到文件开头
	lseek(fd,0,SEEK_SET);
	int len=read(fd,buf,sizeof(buf));
	printf("%s\n",buf);
	close(fd);
}

1 IPC概念(进程间通信)

1.1分类

1:管道–简单
2:信号–系统开销小
3:共享内存–内存映射 (有无有无写血源关系的进程通信都可以)
4:本地套接字-稳定

2管道概念:

2.1本质

本质:内核缓冲区(伪文件-在磁盘中没有对应的匿名管道文件 所以不占磁盘空间;)

2.2特点

  • 读端:流出
    写端:流入
    对应的两个文件描述符
  • 操作管道的进程被销毁之后,管道自动被释放了
  • 管道默认是阻塞的(读,写操作)

3管道原理

  • 内部实现方式:队列
    • 环形队列
    • 特点:先进先出
  • 缓冲区大小:
    • 默认大小4K
    • 大小会根据实际情况情况做出时当调整

4管道的局限性

  • 队列

    • 数据只能读取一次,不能重复读取
  • 半双工

    • 单工:遥控器

    • 半双工:对讲机

      • 数据单向流通
    • 双工:电话

  • 匿名管道

    • 适用于有血源关系的进程。

5分类

  • 匿名管道
  • FIFO管道/命名管
发布了30 篇原创文章 · 获赞 4 · 访问量 2053

猜你喜欢

转载自blog.csdn.net/weixin_45639955/article/details/104363112