int tempeture(){
FILE *file = fopen("/sys/class/thermal/thermal_zone0/temp", "r");
if (!file) {
perror("Failed to open temp file");
return 1;
}
int temp;
fscanf(file, "%d", &temp);
fclose(file);
printf("CPU Temperature: %.2f°C\n", temp / 1000.0);
return 0;
}
我已经搜索了什么是posix和基本壳命令(
Reference
),但是我对C和实际用法不了解相对。struct sysinfo info ;
printf("Uptime : %ld seconds \n ", info.uptime);
该是示例代码如何直接获取数据的情况。但是我不确定其posix命令。另一方面,此代码使用_LINUX_SYSINFO_H
宏。因此可以回答这个问题吗?
我已经搜索了什么是posix和基本壳命令(参考),但是我用C和实际用法不了解相对。
,您很缺少执行和控制此类命令的上下文 - 即Shell。 本身,可用的命令提供了不完整的图片。 它们就像图书馆中可用的功能一样,这些功能需要编程语言,以形成一个连贯的整体。 与您的终端相关联的程序(读取输入并产生输出)是一个外壳。 除了您一直在研究的命令外,POSIX还指定了一组相当完整的编程结构(变量,I/O,有条件语句,循环,shell.ineplyssepts.
.ineplyssepls
.inecly.ineplyssectsssepts
.ineplyssectsssepts.ineplipsssply.inecly.indsscrips.ineplaseinlys session中。
这个不是一个合适的场所,可以尝试为您提供Shell命令语言的底漆,但是这是您可以使用的一系列命令,以产生与给出的C程序相同的结果,但要遵守您从中检索数据的存在和标准内容(一个小数号)(一个小数点)。
temp_millis=$(</sys/class/thermal/thermal_zone0/temp)
temp=$(bc <<EOF
scale=2
$temp_millis / 1000
EOF
)
printf 'CPU Temperature: %s°C\n' "$temp"
that
ia/oredirection
和命令替换读取温度文件的内容,并将它们存储在可变
temp_millis
bc
命令,该命令实现了任意推测计算器,
可在变量
temp
使用
printf
printf
函数不同,尽管它们是相关的)来产生完整的输出消息。
awk
命令是其自己定制语言的处理器,以流式传输文本处理为导向。 在这种特殊情况下,它可用于在单个相对简单的命令中产生所需的输出:awk '{ printf "CPU Temperature: %.2f°C\n", $1 / 1000.0 }' /sys/class/thermal/thermal_zone0/temp
这甚至不是用于awk
run
awk
,使用第一个参数('{ printf "CPU Temperature: %.2f°C\n", $1 / 1000.0 }'
)作为程序来处理名为第二个参数的文件的内容
程序说,对于每条输入,提取第一个字段(
$1
),将其转换为数字,然后将其除以1000,然后根据所示格式格式并输出结果。
printf
命令中的另一个是另一个不同的命令,尽管与我提到的其他两个相关。
另一个例子也是如此,这也依赖于将从指定文件读取的数据形式的一些假设。
awk
您不必通过Posix CMD进行此操作。可用的方式。尽管如此:
awk '{printf "CPU Temperature: %.2f°C\n", $1/1000}' /sys/class/thermal/thermal_zone0/temp