我需要测试我的C++程序,它使用系统时间。该程序很大,它使用第三方库,这些库也可能使用系统时间。
我想看看我的程序在不同日期/时间的行为。
是否可以只更改 UNIX 中一个正在运行的进程的系统时间?
非常感谢...
好吧,我自己找到了答案。
在 unix shell 中,有一个环境变量 TZ,它是时区,它被所有 C/C++ 时间函数使用。
可以操纵此变量将当前 unix shell 中的时间设置为任意时间(限制为秒数,而不是毫秒),甚至更改日期。
例子:
export TZ=A-02:10:20
(从现在开始将时间向前移动 2 小时 10 分 20 秒)。
export TZ=A+02:10:20
(相同的倒移)
如果要更改日期,可以使用大量小时数,例如:
export TZ=A-72:10:20
不幸的是,它不会让您更改太多日期,从我的实验来看,它最多可以向前/向前几天。因此,对于更改月份/年份,这是行不通的。
(设置TZ变量后,使用"date"命令检查当前日期/时间)。
要取消所有更改,请使用
export TZ=
我想你可以使用libfaketime。