分享一个工业级代码,read读文件数据。
读的过程中,调用被信号中断,于是返回一个EINTR错误,read读取失败。
由于没有读到数据而被意外中断,所以需要从新读数据。
while (ret < 0 && EINTR == errno);
........
........
bzero ( buf, sizeof(buf) );//将buf存储区清零
do {
ret = read (0, buf, sizeof(buf) - 1);
} while (ret < 0 && EINTR == errno);
if (ret < 0) {
perror ("read");
continue;
}
........
........
参考:https://blog.csdn.net/u011068702/article/details/62069714