我基本上试图在我的 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;
}