- 论坛徽章:
- 0
|
最近做了一款SPI转UART的驱动,在对驱动进行测试时,遇到了如下的奇葩情况
两个应用程序其它部分完全一样,不一样的如下:
程序1:- while(1)
- {
- memset(buff, 0, sizeof(buff));
- ret = read(comfd, buff, sizeof(buff));
- if (ret < 0)
- {
- perror("read:\n");
- }
- else
- {
- int i = ret;
- while(i)
- {
- printf("read:0x%2x\n", buff[ret - i]);
- i--;
- }
- }
- }
复制代码 程序2:- while(1)
- {
- memset(buff, 0, sizeof(buff));
- ret = read(comfd, buff, sizeof(buff));
- if (ret < 0)
- {
- perror("read com:\n");
- }
- else
- {
- printf("read data ret = %d, count = %d\n", ret, count);
- }
- }
复制代码 现在遇到的情况是:
程序1阻塞在read,直到串口有数据过来
程序2不阻塞,一直打印read data ret = 0, count = 0
我就奇怪了,难道read还可以自动变成不阻塞???
各位如果也遇到过这个情况,还望指导。
没遇到过,也一起探讨探讨 |
|