2011-05-26 16 views
5

私のアプリケーションはハイバネーションモードで反応する必要があるため、サスペンドや再開時の他のアクションで何らかのアクションを実行できます。私はそれを達成するためのいくつかの分配特有の方法を見つけましたが(Upower + DBus)、普遍的なものは何も見つかりませんでした。それを行う方法はありますか?Linuxで resumeシグナルを一時停止していますか?

ありがとうございます!

+2

これは何かであるかもしれません http://www.mjmwired.net/kernel/Documentation/power/freezing-of-tasks.txt – Kristofer

+0

@Kristofer、私はより適切であることを発見した:http:// www。 mjmwired.net/kernel/Documentation/power/notifiers.txtしかし、それはカーネルモードでしか可能ではないようですが、カーネルモジュールを書くことなくユーザ空間で通知する必要があります – ixSci

答えて

2

これに対する簡単な解決策は、自己パイプを使用することです。パイプを開いて定期的にタイムスタンプを書き込みます。このパイプ上のselectは、タイムスタンプを読み取り、現在の時刻と比較します。大きなギャップがある場合は、システムの停止または休止状態からすぐに目を覚ましたことを意味します。

蓋を閉じてスイッチを反転させる時間があまりありません。

あなたが本当にサスペンドを実行する必要がある場合は、pm-utils内でこのようなpowersaveフックをhttps://help.ubuntu.com/community/PowerManagement/ReducedPowerに設定する必要があります。

kill -1 `cat mypid` ; sleep 1 

あなたのプロセスは、SIGHUPをトラップし、中断の準備をするために必要な作業を行います。スリープは、プログラムが信号に反応するのに十分長い時間プロセスを遅らせます。

関連する問題