我要求在特定时间启动我的申请。我不想被投入玉米工作。我的可执行文件是一个应用程序,喜欢从2011年1月20日开始 所以我必须把它作为 ./app-date 2011年1月20日
这里的问题是,我将如何计算命令行选项中提供的当前和日期的时差。
我不想写win功能。是否有任何构建功能可用于这种类型的时差。 (c和Linux)
答案 0 :(得分:4)
我知道你期待C
回答,但这可能让你感兴趣:
由于您使用的是Linux,系统已经提供了一种有效的方式来安排执行任务:at
在您的情况下,想要在20.01.2011上午8点运行任务的用户只需键入:
echo "./app" | at 08:00 20.01.2011
将使用用户的凭据运行任务。请注意,at
也接受相对时间指令,例如at now +1 day
。它是一个功能强大的工具,默认情况下随大多数Linux发行版一起提供。
可以使用预定作业列表:
atq
您甚至可以使用以下方式删除预定作业:
atrm
希望这有帮助。
答案 1 :(得分:1)
您可以计算开始时间与现在之间的差异(以毫秒为单位),然后将该数字作为超时参数传递给select()
或epoll()
,等待那么多毫秒。
要计算差异,一种方法是首先使用struct tm
将日期字符串转换为strptime()
,然后将其传递给mktime()
,这将为您提供一些秒数unix epoch 1970-01-01 00:00:00。然后使用gettimeofday()
或clock_gettime()
获取当前时间,它们还会报告自unix时代以来的时间。将开始时间和当前时间转换为秒并减去值。