更改UNIX进程的系统时间?

And*_*iov 4 unix time timezone datetime process

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

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

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

非常感谢...

And*_*iov 5

好吧,我自己找到了答案。

在unix shell中,有一个环境变量TZ,它是时区,所有C / C ++时间函数都使用它。

可以对该变量进行操作,以将当前unix shell中的时间设置为任意时间(限制为秒数,而不是毫秒),甚至可以更改日期。

例子:

export TZ=A-02:10:20
Run Code Online (Sandbox Code Playgroud)

(将时间从现在向前移动2小时10分20秒)。

export TZ=A+02:10:20
Run Code Online (Sandbox Code Playgroud)

(向后移动相同)

如果要更改日期,则可以使用大量时间,例如:

export TZ=A-72:10:20
Run Code Online (Sandbox Code Playgroud)

不幸的是,它不能让您更改日期太多,从我的实验来看,它最多可前后几天。因此,对于更改月份/年份,此操作无效。

(在设置TZ变量后,使用“ date”命令检查当前日期/时间)。

要取消所有更改,请使用

export TZ=
Run Code Online (Sandbox Code Playgroud)


小智 2

我想你可以使用libfaketime