分享一个工业级代码,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