我正在使用一个应用程序,它将文件X作为输入,并将文件Y和Z作为输出(图形和图形) 现在,如果再次运行应用程序:
代码是用c ++编写的,如何更改代码以满足这两个条件?我应该每次都带X的时间戳吗?
答案 0 :(得分:2)
如果您使用POSIX计算机,请使用stat
或相关功能,例如fstat
。 Windows等价物在http://msdn.microsoft.com/en-us/library/14h5k7ff(v=vs.80).aspx描述。
stat
或Windows对应方返回的结构有一个字段,表示上次修改文件的时间。
答案 1 :(得分:1)
对于便携式解决方案,Boost.Filesystem有last_write_time,它将上次修改的时间作为std::time_t
返回。
答案 2 :(得分:0)
你可以保留文件X的哈希。如果有更改,文件已经更改(更新),你需要更新Y和Z.
if (XHashPrev != XHashNow || !YZExist)
// update files.
答案 3 :(得分:0)
是的,您应该检查文件X并查看(两个选项):
第一个是最简单也是最快的。第二是最准确的。
进一步编辑以下评论:这两个选项可以结合起来达成妥协。
答案 4 :(得分:0)
使用David Hammen的答案,将X的修改时间戳与Y和Z进行比较,如果X被修改为晚于Y或Z - 那么它们已经过时并且应该被重写
答案 5 :(得分:0)
另一种可能性:用X编写基本程序,总是覆盖Y和Z.用make调用基本程序。一个看起来像的文件:
Y Z : X
basicProgram X Y Z
应该做的伎俩。然后,您可以使用“make Y”或“make Z”调用它 底线:让我们担心时间戳等。
答案 6 :(得分:0)
请注意,在检查上次更新时间时,有some limitations:
...在某些文件系统上,[时间]分辨率低至一小时...在程序执行过程中,系统时钟可能由其他可能自动的过程设置为新值...