使用 ualarm 的问题
Issues with using ualarm
在我的代码中,我需要在 2 秒后调用 sigalrm。但是,当我使用 ualarm(2000000, 0 )
时,它不起作用。使用 ualarm
不到 1 秒即可。而 alarm(2)
有效。为什么 ualarm
有时会超过 alarm
是有原因的吗?有没有办法让 ualarm
工作超过 1 秒?
ualarm()
已过时,实际上已从 POSIX 中删除。不要使用它。
如果您仍然坚持使用它,Linux 手册页会注明:
The type useconds_t is an unsigned integer type capable of holding integers in the range [0,1000000].
,我猜这是对一次性 POSIX 规范的引用。你应该从中得到的是 POSIX ualarm()
从来没有保证能够处理大于 1000000 的第一个参数。目前还不清楚是否有任何实现处理过更大的值,但 POSIX 指定它,因为它确实表明至少有些实现没有。
Is there any way to get ualarm to work for over 1 second?
由于 ualarm()
没有(不再)任何标准,答案必然取决于实现。根据您介绍的内容,我倾向于认为通过您的实施,答案是 "no"。
在我的代码中,我需要在 2 秒后调用 sigalrm。但是,当我使用 ualarm(2000000, 0 )
时,它不起作用。使用 ualarm
不到 1 秒即可。而 alarm(2)
有效。为什么 ualarm
有时会超过 alarm
是有原因的吗?有没有办法让 ualarm
工作超过 1 秒?
ualarm()
已过时,实际上已从 POSIX 中删除。不要使用它。
如果您仍然坚持使用它,Linux 手册页会注明:
The type useconds_t is an unsigned integer type capable of holding integers in the range [0,1000000].
,我猜这是对一次性 POSIX 规范的引用。你应该从中得到的是 POSIX ualarm()
从来没有保证能够处理大于 1000000 的第一个参数。目前还不清楚是否有任何实现处理过更大的值,但 POSIX 指定它,因为它确实表明至少有些实现没有。
Is there any way to get ualarm to work for over 1 second?
由于 ualarm()
没有(不再)任何标准,答案必然取决于实现。根据您介绍的内容,我倾向于认为通过您的实施,答案是 "no"。