FIFO和管道都是半双工,单向的数据通信
1.阻塞与非阻塞读写特性,重点:没有用来写的fifo或管道时,读管道或fifo会返回0
2.write管道具体分析,重点:原子性,SIGPIPE
3.管道的消息是字节流模型,没有消息边界,所以需要用对消息加上消息长度字段等方法来对数据进行包划分,也可以以一个结构体作为消息进行发送,接收方直接每次读取结构体大小即可读取一个数据包。
4.管道的限制
5. 例程:以结构体为消息通信
主进程写入10次结构体的数据,三秒后,子进程以结构体大小进行数据读取,结果是子进程读取了10次将10个结构体分别读取出来了
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <errno.h>
#include <signal.h>
#include <pthread.h>
#include <sys/types.h>
#include <sys/un.h>
typedef struct
{
int type;
char buf[32];
}DATA;
int main()
{
int fd[2] = {
0