写进程退出导致 read 阻塞不住|学习笔记

简介: 快速学习写进程退出导致 read 阻塞不住

开发者学堂课程【物联网开发- Linux 高级程序设计全套视频写进程退出导致 read 阻塞不住】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/660/detail/11038


写进程退出导致 read 阻塞不住

 

通信过程中若写进程先退出了,则调用 read 函数从 FIFO 里读数据时不阻塞;若写进程又重新运行,则调用 read 函数从 FIFO 里读数据时又恢复阻塞。

例:04_fifo_read_3.c  阻塞方式打开命名管道,验证写进程退出,会导致 read 不阻塞

Write.c 函数

if(fd<o){

perror("open");

return 0;

}

printf("open write only sucess\n");

write(fd,”hello world”,11);

sleep(1);//1秒钟写一个字符串

while(1);

close(fd);

return 0;

Read.c函数

写进程写一次while(1);

image.gif读进程每隔一秒读一次

运行结果为阻塞,ctrl+c后为不阻塞,如果写进程退出,read不阻塞,image.gif

当写进程重新出现时,read 重新阻塞。image.gif

相关文章
|
8月前
|
存储 网络协议 Java
深入理解Linux网络——内核与用户进程协作之同步阻塞方案(BIO)
在上一部分中讲述了网络包是如何从网卡送到协议栈的(详见深入理解Linux网络——内核是如何接收到网络包的),接下来内核还有一项重要的工作,就是在协议栈接收处理完输入包后要通知到用户进程,如何用户进程接收到并处理这些数据。
|
Kubernetes Ubuntu Cloud Native
深入剖析Kubernetes学习笔记-05 | 白话容器基础(一):从进程说开去
深入剖析Kubernetes学习笔记-05 | 白话容器基础(一):从进程说开去
141 0
|
8月前
|
存储
【进程信号】信号阻塞的原理
【进程信号】信号阻塞的原理
|
8月前
|
消息中间件 Linux 调度
【Linux 进程/线程状态 】深入理解Linux C++中的进程/线程状态:阻塞,休眠,僵死
【Linux 进程/线程状态 】深入理解Linux C++中的进程/线程状态:阻塞,休眠,僵死
593 0
|
8月前
|
存储 算法 Linux
【探索Linux】P.17(进程信号 —— 信号保存 | 阻塞信号 | sigprocmask() | sigpending() )
【探索Linux】P.17(进程信号 —— 信号保存 | 阻塞信号 | sigprocmask() | sigpending() )
114 0
|
消息中间件 Shell Linux
计算机操作系统学习笔记(7)——进程通信
计算机操作系统学习笔记(7)——进程通信
100 0
|
8月前
|
Linux 调度
Linux学习笔记十一:进程管理
Linux学习笔记十一:进程管理
|
存储 安全 Linux
Go语言学习笔记-进程和线程
Go语言学习笔记-进程和线程
66 0
Go语言学习笔记-进程和线程
|
数据可视化 Java Python
python可视化界面调用了某函数导致进程阻塞解决办法
python可视化界面调用了某函数导致进程阻塞解决办法
|
存储 算法 Linux
《Linux操作系统编程》第二章 进程运行与调度: 了解进程的定义与特征、进程的状态与切换、进程管理的数据结构、进程的创建与终止、阻塞与唤醒、挂起与激活以及处理机调度的相关概念
《Linux操作系统编程》第二章 进程运行与调度: 了解进程的定义与特征、进程的状态与切换、进程管理的数据结构、进程的创建与终止、阻塞与唤醒、挂起与激活以及处理机调度的相关概念
310 0

相关实验场景

更多