回答:
この回答で/sys/class/thermal/thermal_zone0/temp
指定されているように、ファイルを読み取ることができます。コマンドラインから測定することで、ファイルはで読み込まれcat
ます。ただし、ファイルをCで開くことができるはずです。温度は摂氏ミリ度でASCII番号として返されます。おそらくこのように、テストされていません:)
FILE *temperatureFile;
double T;
temperatureFile = fopen ("/sys/class/thermal/thermal_zone0/temp", "r");
if (temperatureFile == NULL)
; //print some message
fscanf (temperatureFile, "%lf", &T);
T /= 1000;
printf ("The temperature is %6.3f C.\n", T);
fclose (temperatureFile);
open()
してread()
ください。「libsysfs」もあるが、それは放棄されており、カーネル開発者は人々にそれから離れるよう明示的に指示している。
@Frepaが言ったように、RaspberryPi用のカーネルサーマルドライバーが現在あるので、それを使用するのが最も簡単な方法です。私の知る限りでは、これはうまくいきませんvgencmd
。サーマルカーネルドライバーが存在する前でも、温度を読み取ることができました。mailbox
GPUで実行されているVideoCore OSと通信するために呼び出されるRaspberryPiで利用可能な特別な通信メカニズムを使用しています。これは部分的にここに文書化されています。