将fopen/popen() 使用的底层文件描述符标记为非阻塞
int ret = 0;
system("echo -e \"AT+CPIN?\r\n\" > /dev/smd8");
FILE *pf = NULL;
pf = fopen("/dev/smd8", "r");
if(!pf) {
perror("fopen");
ret = -1;
return ret;
}
int fd = fileno(pf);
int flags;
flags = fcntl(fd, F_GETFL, 0);
flags |= O_NONBLOCK;
fcntl(fd, F_SETFL, flags);
char buff[1024] = {0};
while(fgets(buff, sizeof(buff), pf)) {
if(strstr(buff, "OK")){
break;
}
else if(strstr(buff, "ERROR")){
ret = -1;
break;
}
else if(strstr(buff, "READY")){
ret = -1;
break;
}
memset(buff, 0, sizeof(buff));
}
fclose(pf);
return ret;