你的这个串口设备在打开(也就是调用open函数获取设备描述符)的时候设置的是非阻塞方式。导致串口上没数据拦耐的时候read也立即返雀衡衡回,但是你的while已经把顷做有效的数据读走了,if里面读到的一定是空的,所以什么也不打印。建议1. 在打开串口设备时使用阻塞方式,不会设置的话查查open系统调用的帮助,它有个flag;2. 把while循环内的if语句去掉。