기본적으로 내 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;
}