开发者学堂课程【物联网开发- 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);
读进程每隔一秒读一次
运行结果为阻塞,ctrl+c后为不阻塞,如果写进程退出,read不阻塞,
当写进程重新出现时,read 重新阻塞。