TimeManager
|
スケジュールを有効にするコマンドに関する宣言と説明。 More...
Go to the source code of this file.
Functions | |
int | activate (int argc, char *argv[]) |
データベースにある自プロセスグループのスケジュールを有効にする。 More... | |
スケジュールを有効にするコマンドに関する宣言と説明。
activateは、プログラムの開始、終了をコントロールする部分である。
開始時刻は、プログラムの終了をもって通知し、終了時刻は、自プロセスグループに シグナルを送信して通知する。
メインプロセスでは開始時刻を、終了時刻は子プロセスを作成して管理する。
メインプロセスは、データベースから自プロセスグループのスケジュールを探し、開 始時刻、終了時刻を取得した後、子プロセスを作成する。
メインプロセスは、開始時刻までスリープして終了し、後に続くプログラムが開始 時刻に実行されるようにする。
また、子プロセスは、終了時刻までスリープした後、シグナルを自プロセスグループ に送信して終了する。
子プロセスのプロセスIDは、自プロセスグループのスケジュールのterminator値で 管理される。
親プロセスは、子プロセスを看取らないで終了してしまうので、子プロセスはinitに 引き取られる。
子プロセスのゾンビ化を回避するため、SIGCHLDのハンドラにSIG_IGN、 フラグにSA_NOCLDWAITを指定する。
int activate | ( | int | argc, |
char * | argv[] | ||
) |
データベースにある自プロセスグループのスケジュールを有効にする。
正常に有効化ができると、開始時刻までブロックし、開始時刻とともにstdinの 内容をそのままstdoutに受け流し、終了する。
終了時刻には、自プロセスグループに指定のシグナルを送信する。
送信されるシグナルのデフォルトはSIGTERM。
開始時刻後に再度実行された場合は、終了時刻が再スケジュールされる。
[in] | argc | argc値 |
[in] | argv | argv値 |