使用ualarm的问题

时间:2016-09-21 16:25:20

标签: c unix signals alarm

在我的代码中,我需要在2秒后调用sigalrm。但是,当我使用$xmlDoc = (Get-Content $webConfig) -as [Xml] $root = $xmlDoc.get_DocumentElement(); $handler1 = $xmlDoc.CreateNode('element',"add",'') $handler1.SetAttribute('name','Telerik_Web_UI_DialogHandler_aspx') $handler1.SetAttribute('verb','*') $handler1.SetAttribute('preCondition','integratedMode') $handler1.SetAttribute('path','Telerik.Web.UI.DialogHandler.aspx') $handler1.SetAttribute('type','Telerik.Web.UI.DialogHandler') $root.'system.webServer'.handlers.AppendChild($handler1); 时,它不起作用。使用ualarm(2000000, 0 )不到1秒的作品。而ualarm起作用。是否有理由在alarm(2)之后有时使用ualarm?有没有办法让alarm工作超过1秒?

1 个答案:

答案 0 :(得分:3)

ualarm()已过时,实际上已从POSIX中删除。不要使用它。

如果你仍然坚持使用它,它的Linux手册页指出:

  

类型useconds_t是一个无符号整数类型,能够保存[0,1000000]范围内的整数。

,我猜这是对一次性POSIX规范的引用。你应该从中得到的是POSIX ualarm()永远不能保证能够处理大于1000000的第一个参数。它不清楚是否有任何实现处理更大的值,但POSIX指定的事实它确实表明至少有一些实现没有。

  

有没有办法让ualarm工作超过1秒钟?

由于ualarm()没有(不再)任何标准,答案必然依赖于实现。根据您提供的内容,我倾向于认为通过您的实施,答案是" no"。