2016-09-21 5 views
0

私のコードでは、2秒後にsigalrmを呼び出す必要があります。しかし、ualarm(2000000, 0)を使用しても動作しません。 ualarmを使用して1秒未満で動作します。一方、alarm(2)が機能します。 alarmを超える時にualarmを使用すべき理由はありますか? ualarmを1秒以上働かせる方法はありますか?ualarmの使用に関する問題

+0

[mcve]を表示してください –

答えて

2

ualarm()は廃止され、実際にはPOSIXから削除されました。それを使用しないでください。

あなたはとにかくそれを使う、という場合には、それのためのLinuxのマニュアルページには、このノート:

useconds_t型は、範囲[0,1000000]の整数を保持できる符号なし整数型です。

これは、1回限りのPOSIX仕様への参照です。 POSIX ualarm()は、1000000より大きい最初の引数を扱うことができるとは決して保証されませんでした。実装がより大きな値を処理したかどうかは不明ですが、POSIXが指定したように、いくつかの実装はそうしなかった。

ualarmを1秒以上働かせる方法はありますか?

ualarm()の標準が存在しないため、答えは実装依存である必要があります。あなたが提示した内容に基づいて、あなたの実装では答えは「いいえ」と思う傾向があります。

+0

ちょっと余計な知識のために、アラームはualarmの交換ですか? – duckvader

+0

@duckvader、 'alarm()'は 'ualarm()'と同じ解像度ではありませんが、それでも十分です。 BSDでは、それは起源だった、 'ualarm()'は 'getitimer()'/'setitimer()'のラッパーでした。それらは現在廃止されています(削除されていない可能性もありますが)。推奨される置き換えは 'timer_gettime()'/'timer_settime()'を介してアクセスされるPOSIXタイマーです。 –

関連する問題