Linux时间编程

简介: Linux时间编程

第1关:Linux获取时间

/*************************************************************************
    > File Name: GetTimeTest.c
    > Author: ma6174
    > Mail: ma6174@163.com 
    > Created Time: Tue 17 Apr 2018 08:42:30 PM CST
 ************************************************************************/
#include <stdio.h>
#include <unistd.h>
#include <time.h>
typedef struct _localtimestruct
{
    int year;
    int month;
    int day;
    int hour;
    int minute;
    int second;
}localtimestruct;
time_t gettimesecond (void)
{
    /*************Begin***********/
    time_t seconds = time (NULL);
    return seconds;
    /**************End************/
}
void getlocaltv (localtimestruct *ltinfo)
{
    /*************Begin***********/
    time_t current = time(NULL);
    struct tm *tv = localtime(&current);
    ltinfo->year = tv->tm_year + 1900;
    ltinfo->month = tv->tm_mon + 1;
    ltinfo->day = tv->tm_mday;
    ltinfo->hour = tv->tm_hour;
    ltinfo->minute = tv->tm_min;
    ltinfo->second = tv->tm_sec;
    /**************End************/
}


第2关:Linux时间相互转换

/*************************************************************************
    > File Name: TimeTransTest.c
    > Author: ma6174
    > Mail: ma6174@163.com 
    > Created Time: Tue 17 Apr 2018 10:13:59 PM CST
 ************************************************************************/
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#include <sys/time.h>
typedef struct _localtimestruct
{
    int year;
    int month;
    int day;
    int hour;
    int minute;
    int second;
}localtimestruct;
void func (void);
void timetrans (time_t current, char *time_str, localtimestruct *ltinfo, struct tm *tm_time)
{
    /*************Begin***********/
    if (NULL != time_str)
    {
            memcpy (time_str, ctime(&current), strlen(ctime(&current)));
    }
    if(NULL != tm_time)
    {
            memcpy(tm_time, gmtime(&current), sizeof(struct tm));
            if (NULL != ltinfo)
            {
                    ltinfo->year = tm_time->tm_year + 1900;
                    ltinfo->month = tm_time->tm_mon + 1;
                    ltinfo->day = tm_time->tm_mday;
                    ltinfo->hour = tm_time->tm_hour;
                    ltinfo->minute = tm_time->tm_min;
                    ltinfo->second = tm_time->tm_sec;
            }
    }
    /**************End************/ 
}
long getdifftimeval (void)
{
    /*************Begin***********/
    struct timeval start;
    struct timeval end;
    gettimeofday(&start, NULL);
    func();
    gettimeofday(&end, NULL);
    long timeval_s = (end.tv_sec * 1000 * 1000 + end.tv_usec) - (start.tv_sec * 1000 * 1000 + start.tv_usec);
    return timeval_s;
    /**************End************/
}


第3关:Linux 时间定时器

/*************************************************************************
    > File Name: TimerTest.c
    > Author: ma6174
    > Mail: ma6174@163.com 
    > Created Time: Thu 19 Apr 2018 02:58:54 PM CST
 ************************************************************************/
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <signal.h>
#include <time.h>
#include <sys/time.h>
void func (void);
static int count = 0;//the number of calling loopevent 
void loopevent (int signo)
{
    /************Begin************/
    if(SIGPROF == signo)
    {
        func ();
        if(4 > count)
        {
            count++;
        }
        else
        {
            struct itimerval new_it;
            new_it.it_interval.tv_sec = 0;
            new_it.it_interval.tv_usec = 0;
            new_it.it_value.tv_sec = 0;
            new_it.it_value.tv_usec = 0;
            setitimer (ITIMER_PROF, &new_it, NULL);
        }
    }
    /*************End*************/
}
void setlocaltimer (void)
{
    /************Begin************/
    struct itimerval new_it;
    struct itimerval old_it;
    struct sigaction act;
    /*register signal function*/
    act.sa_handler = loopevent;
    act.sa_flags = 0;
    sigemptyset (&act.sa_mask);
    sigaction (SIGPROF, &act, NULL);
    new_it.it_interval.tv_sec = 1;
    new_it.it_interval.tv_usec = 0;
    new_it.it_value.tv_sec = 3;
    new_it.it_value.tv_usec = 0;
    setitimer (ITIMER_PROF, &new_it, &old_it);
    /*************End*************/
}
目录
相关文章
|
4月前
|
消息中间件 存储 缓存
【嵌入式软件工程师面经】Linux系统编程(线程进程)
【嵌入式软件工程师面经】Linux系统编程(线程进程)
100 1
|
4天前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
4天前
|
Shell Linux
Linux shell编程学习笔记82:w命令——一览无余
Linux shell编程学习笔记82:w命令——一览无余
|
19天前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
19 6
|
19天前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
59 3
|
8天前
|
Shell Linux Python
python执行linux系统命令的几种方法(python3经典编程案例)
文章介绍了多种使用Python执行Linux系统命令的方法,包括使用os模块的不同函数以及subprocess模块来调用shell命令并处理其输出。
12 0
|
2月前
|
项目管理 敏捷开发 开发框架
敏捷与瀑布的对决:解析Xamarin项目管理中如何运用敏捷方法提升开发效率并应对市场变化
【8月更文挑战第31天】在数字化时代,项目管理对软件开发至关重要,尤其是在跨平台框架 Xamarin 中。本文《Xamarin 项目管理:敏捷方法的应用》通过对比传统瀑布方法与敏捷方法,揭示敏捷在 Xamarin 项目中的优势。瀑布方法按线性顺序推进,适用于需求固定的小型项目;而敏捷方法如 Scrum 则强调迭代和增量开发,更适合需求多变、竞争激烈的环境。通过详细分析两种方法在 Xamarin 项目中的实际应用,本文展示了敏捷方法如何提高灵活性、适应性和开发效率,使其成为 Xamarin 项目成功的利器。
39 1
|
2月前
|
安全 Linux 开发工具
探索Linux操作系统:从命令行到脚本编程
【8月更文挑战第31天】在这篇文章中,我们将一起潜入Linux操作系统的海洋,从最基础的命令行操作开始,逐步深入到编写实用的脚本。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和实用技能。我们将通过实际代码示例,展示如何在日常工作中利用Linux的强大功能来简化任务和提高效率。准备好了吗?让我们一起开启这段旅程,探索Linux的奥秘吧!
|
2月前
|
Linux
揭秘Linux心脏:那些让你的编程事半功倍的主要系统调用
【8月更文挑战第31天】Linux中的系统调用是操作系统提供给应用程序的接口,用于请求内核服务,如文件操作、进程控制等。本文列举了22种主要系统调用,包括fork()、exec()、exit()、wait()、open()、close()、read()、write()等,并通过示例代码展示了如何使用fork()创建新进程及使用open()、write()、close()操作文件。这些系统调用是Linux中最基本的接口,帮助应用程序与内核交互。
29 1
|
2月前
|
Linux 程序员 开发者
源社区的兴起:从“代码隐士”到Linux引领的“全球编程嘉年华”
在编程的古老森林中,曾有“代码隐士”默默耕耘,惧怕智慧外泄。直到“开源”春风拂过,源社区如全球编程嘉年华盛开!开源文化颠覆了“独门秘籍”的传统,像“武林秘籍共享”般在网络上公开,鼓励知识传播与智慧碰撞。程序员组队开发,分享代码,提升科技实力。Linux则从“首席大厨”变身为“总导演”,以强大内核调制出诱人应用,引领潮流并推动技术创新。加入这场没有血腥厮杀,只有知识盛宴的“编程版《饥饿游戏》”吧!与全球开发者共享编程的乐趣与成就感!别忘了带上你的“独门秘籍”,可能下一个改变世界的创意就在其中!
59 7
下一篇
无影云桌面