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管道/命名管