博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 设置系统时间和日期 API
阅读量:6368 次
发布时间:2019-06-23

本文共 2066 字,大约阅读时间需要 6 分钟。

嵌入式Linux 设置时间和日期 API ,它是busybox要提取的源代码。

Linux设置时间和日期的步骤:

1. 设置系统时间和日期;

2. 该系统的时间和日期,同步到硬件。

#include 
#include
#include
#include
#include
#include
#include
#include
int SetSysDateAndTime(const char *time_str);void SetHWClockFromSysClock(int utc);static int rtc_xopen(const char **default_rtc, int flags);static void write_rtc(time_t t, int utc);static const char *rtcname;int main(void){ const char time_str[] = "1989-11-22 11:22:33"; SetSysDateAndTime(time_str); SetHWClockFromSysClock(0); system("reboot"); return 0;}int SetSysDateAndTime(const char *time_str){ struct tm time_tm; struct timeval time_tv; time_t timep; int ret; if(time_str == NULL) { fprintf(stderr, "time string args invalid!\n"); return -1; } sscanf(time_str, "%d-%d-%d %d:%d:%d", &time_tm.tm_year, &time_tm.tm_mon, &time_tm.tm_mday, &time_tm.tm_hour, &time_tm.tm_min, &time_tm.tm_sec); time_tm.tm_year -= 1900; time_tm.tm_mon -= 1; time_tm.tm_wday = 0; time_tm.tm_yday = 0; time_tm.tm_isdst = 0; timep = mktime(&time_tm); time_tv.tv_sec = timep; time_tv.tv_usec = 0; ret = settimeofday(&time_tv, NULL); if(ret != 0) { fprintf(stderr, "settimeofday failed\n"); return -2; } return 0;}void SetHWClockFromSysClock(int utc){ struct timeval tv; gettimeofday(&tv, NULL); //if (gettimeofday(&tv, NULL)) // bb_perror_msg_and_die("gettimeofday() failed"); write_rtc(tv.tv_sec, utc);}static int rtc_xopen(const char **default_rtc, int flags){ int rtc; if (!*default_rtc) { *default_rtc = "/dev/rtc"; rtc = open(*default_rtc, flags); if (rtc >= 0) return rtc; *default_rtc = "/dev/rtc0"; rtc = open(*default_rtc, flags); if (rtc >= 0) return rtc; *default_rtc = "/dev/misc/rtc"; } return open(*default_rtc, flags);}static void write_rtc(time_t t, int utc){#define RTC_SET_TIME _IOW('p', 0x0a, struct rtc_time) /* Set RTC time */ struct tm tm; int rtc = rtc_xopen(&rtcname, O_WRONLY); tm = *(utc ?

gmtime(&t) : localtime(&t)); tm.tm_isdst = 0; ioctl(rtc, RTC_SET_TIME, &tm); close(rtc); }

转载地址:http://qkrma.baihongyu.com/

你可能感兴趣的文章
qml文字滚动效果的封装,实现方式运用的qml中提供的动画效果,另一种实现方式也可以使用定时器修改控件的坐标来实现...
查看>>
标准C++实现任务队列
查看>>
jdbc url
查看>>
刷leetcode第704题-二分查找
查看>>
debug_backtrace() 函数生成一个 backtrace(追踪)
查看>>
第七天,还是盒子
查看>>
XAMPP软件包下载
查看>>
XXL-JOB初体验-ORACLE版
查看>>
沉思录:别人的棺材
查看>>
jersey + spring + mybatis + redis项目搭建
查看>>
PAT 1006 部分正确_另一种解法
查看>>
在Keil环境下使用JLink实现printf输出重定向至debug窗口
查看>>
postgres的\d命令不显示全部的用户表
查看>>
poj 3468 A Simple Problem with Integers
查看>>
OOA/OOD/OOP细讲
查看>>
Tomcat 系统架构与设计模式_ 设计模式分析
查看>>
本地串口TCP/IP 映射到远端串口
查看>>
锁机制探究
查看>>
硬盘直接引导启动Manjaro Linux iso
查看>>
CodeSmith代码生成工具介绍
查看>>