deprecating/obsoleting 某些 Linux 时间 API 的原因是什么?
What is the reason for deprecating/obsoleting certain Linux time APIs?
Linux有很多API可以用来设置系统时间:我们可以用time()
、gettimeofday()
、clock_gettime()
来获取时间,还有我们可以使用stime()
、settimeofday()
、clock_settime()
来设置时间。
但是,我注意到其中一些 API 被标记为“已弃用”或“已过时”。我找不到这种弃用背后的原因。具体来说:
为什么 stime()
已弃用 (source) but not time()
? gettimeofday()
offers higher resolution than time()
, but the former rather than the latter was declared "obsolete" (source)。
做出这些决定的原因是什么?
这些 API 已被宣布为“过时”,原因通常是:它们陈旧、不安全、不可移植、具有 unspecified/undefined 行为、有棘手的边缘情况、存在更好的替代方案等
Linux 中对 API 的弃用通常视具体情况而定;没有一般规则。
Why is stime()
deprecated…
这是 SVr4
中的一个非标准函数,没有人使用(在 Linux 上)。在任何情况下都应该使用 clock_settime
。
…but not time()
?
time()
是随处可用的超级标准函数,因为它是 C language standard 的一部分。会用到...时间结束!
gettimeofday()
offers higher resolution than time()
, but the former rather than the latter was declared "obsolete"
gettimeofday()
是一个 POSIX 函数,POSIX 标准化了现有的做法。一段时间后(POSIX 第 7 期)clock_gettime()
发明了分辨率更高且更便携的软件。由于存在更好、更安全的界面,POSIX 指出 gettimeofday()
已过时。我认为该说明对开发人员来说是不言自明的:
APPLICATION USAGE
Applications should use the clock_gettime() function instead of the obsolescent gettimeofday() function.
一般来说,要找出特定 API 被弃用的原因,请研究特定的项目历史。源代码存储库提供提交历史、标准,如 POSIX 或 C 标准,带有“基本原理”,一个单独的文档或包含在文档中,用于解释决定。
例如,您可以从 this commit:
中找到关于 glibc 中 stime()
弃用的信息
* The obsolete function stime is no longer available to newly linked
binaries and it has been removed from <time.h> header. This function
has been deprecated in favor of clock_settime.
Linux有很多API可以用来设置系统时间:我们可以用time()
、gettimeofday()
、clock_gettime()
来获取时间,还有我们可以使用stime()
、settimeofday()
、clock_settime()
来设置时间。
但是,我注意到其中一些 API 被标记为“已弃用”或“已过时”。我找不到这种弃用背后的原因。具体来说:
为什么 stime()
已弃用 (source) but not time()
? gettimeofday()
offers higher resolution than time()
, but the former rather than the latter was declared "obsolete" (source)。
做出这些决定的原因是什么?
这些 API 已被宣布为“过时”,原因通常是:它们陈旧、不安全、不可移植、具有 unspecified/undefined 行为、有棘手的边缘情况、存在更好的替代方案等
Linux 中对 API 的弃用通常视具体情况而定;没有一般规则。
Why is
stime()
deprecated…
这是 SVr4
中的一个非标准函数,没有人使用(在 Linux 上)。在任何情况下都应该使用 clock_settime
。
…but not
time()
?
time()
是随处可用的超级标准函数,因为它是 C language standard 的一部分。会用到...时间结束!
gettimeofday()
offers higher resolution thantime()
, but the former rather than the latter was declared "obsolete"
gettimeofday()
是一个 POSIX 函数,POSIX 标准化了现有的做法。一段时间后(POSIX 第 7 期)clock_gettime()
发明了分辨率更高且更便携的软件。由于存在更好、更安全的界面,POSIX 指出 gettimeofday()
已过时。我认为该说明对开发人员来说是不言自明的:
APPLICATION USAGE
Applications should use the clock_gettime() function instead of the obsolescent gettimeofday() function.
一般来说,要找出特定 API 被弃用的原因,请研究特定的项目历史。源代码存储库提供提交历史、标准,如 POSIX 或 C 标准,带有“基本原理”,一个单独的文档或包含在文档中,用于解释决定。
例如,您可以从 this commit:
中找到关于 glibc 中stime()
弃用的信息
* The obsolete function stime is no longer available to newly linked
binaries and it has been removed from <time.h> header. This function
has been deprecated in favor of clock_settime.