5

我需要测试我的 C++ 程序,它使用系统时间。该程序很大,它使用可能也使用系统时间的第三方库。

我想看看我的程序在不同日期/时间的表现如何。

是否可以仅更改 UNIX 中一个正在运行的进程的系统时间?

非常感谢...

4

2 回答 2

6

嗯,我自己找到了答案。

在 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 变量后,使用“日期”命令检查当前日期/时间)。

要取消所有更改,请使用

export TZ=
于 2013-01-30T10:35:46.200 回答
2

我想你可以使用libfaketime

于 2013-01-30T10:11:16.687 回答