1,popen:每次fread都要重新做popen,否则值不刷新。
//linux在应用层输出设备节点值日志
char bat_vol_get[16] = {0};
char bat_percentage_get[16] = {0};
while(1)
{
sleep(3);
FILE *fd_vol = popen("cat /sys/class/power_supply/battery/voltage_now", "r");
FILE *fd_per = popen("cat /sys/class/power_supply/battery/capacity", "r");
fread(bat_vol_get, 1, 15, fd_vol);
fread(bat_percentage_get, 1, 15, fd_per);
printf("bat_vol_get=%s", bat_vol_get);
printf("bat_percentage_get=%s", bat_percentage_get);
pclose(fd_vol);
pclose(fd_per);
}
2,open:open一次后每次read都能获取到刷新的值。
int fd = 0;
char result[2] = {0};
unsigned char value = 0;
fd = open("/dev/ds18b20", O_RDONLY);
if (fd < 0)
{
SYS_INFO("open /dev/ds18b20 failed with %s!\n", strerror(errno));
return;
}
read(fd, &result, sizeof(result)); //读到的是字符串
value = atoi(result); //将字符串转化为int类型
close(fd);