(3).当指向管道读端的文件描述符都关闭,读端引用计数为0,仍有进程向管道内写入数据,那么该进程会收到SIGPIPE信号,导致进程异常终止。 (4)管道的读端并没有关闭,而没有进程从管道中读取数据,这是不断有进程向管道写入数据,满了之后write会阻塞 当count加到65535时说明管道已写满不再写入,等待读端从管道内读取数据之后才继续写入,因此可以知道管道的大小为65536个字节,也就是32K。
有名管道fifo文件特性 mkfifo命令创建管道文件 prw-rw-r-- 1 allen allen 0 1月 4 09:57 hello 文件属性前边的p代表文件属性,表示管道 文件大小是0 共享内存 shmget() //创建指定大小的共享内存,并返回ID号 char *buf = shmat(id, NULL, 0)将内核对象维护的内存挂在到指定的线性地址,之后拷贝数据然后解除挂载 ipcs -m 查看当前共享内存段 消息队列 int msgget(key_t key, int flags); //发送消息到消息队列 int msgsnd(int msqid, const void * msgp, size_t msgsz, int msgflg); //获取消息 ssize_t msgrcv(int msqid, void * msgp, size_t msgsz, long msgtyp, int msgflg); //查看、设置、删除、ipc内核对象 int msgctl(int msqid, int cmd, struct msqid_ds *buf);