在Linux系统上(我前面的那个是Ubuntu 10.04,但这无关紧要),如何判断在同一秒内创建的两个文件中的哪一个是先创建的?我控制的过程既不会创造;在所有其他方面,我认为ctime会做到这一点,但1秒的分辨率是一个问题。
对于后台,我正在尝试可靠地确定可能过时的pidfile是否引用具有该pid的当前进程。如果有更好的方法,我会全力以赴。
答案 0 :(得分:0)
您可以尝试ls -rt
按时间对文件进行排序,希望文件头比默认列表时间格式显示更精确。但是如果文件系统没有这些信息,则无法做到这一点。
其他选择?您可以向文件添加ID并始终递增它,但只要您尝试从文件系统加载此ID(当您创建新进程时),就会遇到锁定问题。
那么如何确保PID文件不是陈旧的?答:使用the daemon
script。它在后台运行一个进程,并确保在进程退出时立即删除PID文件。
答案 1 :(得分:0)
实际上,在具有现代文件系统的现代Unices中,文件修改时间存储在timespec中。详细说明:
The standard说stat
看起来像WRT时间:
struct timespec st_atim Last data access timestamp.
struct timespec st_mtim Last data modification timestamp.
struct timespec st_ctim Last file status change timestamp.
time_t tv_sec seconds
long tv_nsec nanoseconds
所以,在我的Linux 2.6.39上做一个统计数据:
Access: 2011-07-14 15:38:20.016666721 +0300
Modify: 2011-06-10 03:06:12.000000000 +0300
Change: 2011-06-17 11:01:35.416667110 +0300
总之,如果硬件供应它,我认为你已经有足够的精度。