2つの異なる方法でSIGALRMを処理します。

2つの異なる方法でSIGALRMを処理します。

alarm()送信される2つの異なる警告をどのように処理しますか?

A=5たとえば、andがある場合を使用せずに数秒後に1つのタスクを実行し、数秒後に別のタスクを実行するようにB=10プログラムに指示することはできますか?ABsleep()

この質問をする主な目的は、同じプログラムで2つの異なる警告を処理する方法を理解することです。

答え1

あなたはそれらを一度に1つずつ処理します。まず数秒間アラームを設定しますA=5。アラームが鳴った場合は、目的の操作を実行してから数秒間別のB-A = 10-5 = 5アラームを設定してください。点火後は別の作業を行ってください。

または、通常、時間のあるタスクをソートされたリストに保存し、最初のタスクが完了するまで残りの時間に対して常にアラームをプログラムするようにします。

より一般的には、同時に他のタスクを実行できるため、ある種のイベントループがある可能性があります。この場合、イベントループ(おそらく呼び出し)でタイムアウトをselect()代わりに使用alarm()し、メインプログラムでタイムアウト操作を実行できます。これにより、他のタスクの実行中に警告が発生しても問題はなく、タスクを混乱させる同時処理はありません。

関連情報