組み込みCアプリケーションからrtcドライバデータ(dev / rtc0)を読み取るには?

組み込みCアプリケーションからrtcドライバデータ(dev / rtc0)を読み取るには?

デフォルトでは、私のCアプリケーションは次のコマンドの出力を読み取ろうとします。

timedatectl

だから基本的に私は私のアプリケーションを通してRTC時間を読みたいと思います。だから私は同じ理由で私のアプリケーションから上記のコマンドの出力を読み取ろうとします。

O RTCを使用して時間を読む他の方法はありますか?

/dev/rtc0

どんな助けでも大変感謝します!

ベストアンサー1

ネイティブアクセス制御が必要な場合は、ファイルを開いた後に呼び出しを使用する必要が/dev/rtc0あります。ioctlマンページ)、例えば

#include <errno.h>
#include <fcntl.h>
#include <linux/rtc.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <time.h>
#include <unistd.h>

int main(int argc, char** argv)
{
    int rtc_fd = open("/dev/rtc0", O_RDONLY);
    if (rtc_fd < 0)
    {
        perror("");
        return EXIT_FAILURE;
    }

    struct rtc_time read_time;

    if (ioctl(rtc_fd, RTC_RD_TIME, &read_time) < 0)
    {
        close(rtc_fd);
        perror("");
        return EXIT_FAILURE;
    }

    close(rtc_fd);

    printf("RTC Time is: %s\n", asctime((struct tm*)&read_time));

    return EXIT_SUCCESS;
}

おすすめ記事