在探讨2.8标准之间的冲突时,虽然这些不同的标准之间配合得相当好,但我们仍需关注它们之间的差别,特别是ANSI C标准和POSIX.1之间的差别。(因为XPG3是一个较老的正在被修订的标准,FIPS则是一个要求更严的POSIX.1。)ANSI C定义了函数clock,它返回进程使用的CPU时间,返回值是clock_t类型值。为了将此值变换成以秒为单位,需要将其除以在头文件中定义的CLOCKS_PER_SEC。而POSIX.1定义了函数times,它返回调用者及其所有终止子进程的CPU时间以及时钟时间,这些值也是clock_t类型。

更有趣的是,IEEE Std.1003.1-1988将符号CLK_TCK定义为每秒滴答数,这些clock_t值都是以此度量的。然而,1990 POSIX.1标准指出不再使用CLK_TCK,而是使用sysconf函数来获得每秒滴答数,并将其用于times函数的返回值。看似简单的术语“每秒滴答数”,在ANSI C和POSIX.1的定义中却大相径庭。这两个标准也用同一数据类型(clock_t)来保存这些不同的值,在SVR4中可以看到这种差别:clock返回微秒数(CLOCK_PER_SEC是一百万),而CLK_TCK通常是50、60或100,这取决于CPU类型。

想了解更多关于这些标准的详细信息吗?可以查看这些资源:ANSI标准的C库函数ansi c标准ANSI C标准c标准ansi,以及POSIX标准以及函数接口查询。这些链接将带您进入一个充满技术细节和标准演变历史的知识海洋!

是否觉得这些标准间的差异令人费解又有趣?无论是开发者还是技术爱好者,这些标准的深究无疑是提升专业技能的一大步。