开发者学堂课程【物联网开发- Linux 高级程序设计全套视频:Write 带阻塞】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/660/detail/11040
Write 带阻塞
调用write 函数向 FIFO 里写数据,当缓冲已满时 write 也会阻塞。
验证:
Write.c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char *argv[ ])
{
int fd;
Int i=0
}
fd = open("./fifo",O _RDONLY);
If (td<0)
{
perror("open");
return 0,
}
printf("open read only sucess \n");
while(1 )
{
Write(fd,”hello world”,11);
Printf(“write sucess\n);
I++;
Printf(“i=%d\n”,n);
//sleep(1);
}
close(fd);
return 0;
}
Read.c
Int fd;
Char buf[101];
Mkfifo(“fifo”,o_RDONLY);
If(fd<0)
{
Perror(“open”);
Return 0;
}
Printf(“open read only sucess\n”);
While(1)
{
Memset(buf,0,sizeof(but));
Read(fd,but,100);
Sleep(1);
While(1);
Close(fd);
Return0;
}
打开管道不循环读了,只读一次
效果如下:
只读了一百个,验证了write,将管道写满后
这两种前提是默认阻塞方式打开管道,没有指定非堵塞。