TimeManager
Functions
activate.h File Reference

スケジュールを有効にするコマンドに関する宣言と説明。 More...

Go to the source code of this file.

Functions

int activate (int argc, char *argv[])
 データベースにある自プロセスグループのスケジュールを有効にする。 More...
 

Detailed Description

スケジュールを有効にするコマンドに関する宣言と説明。

activateは、プログラムの開始、終了をコントロールする部分である。
開始時刻は、プログラムの終了をもって通知し、終了時刻は、自プロセスグループに シグナルを送信して通知する。
メインプロセスでは開始時刻を、終了時刻は子プロセスを作成して管理する。

メインプロセスは、データベースから自プロセスグループのスケジュールを探し、開 始時刻、終了時刻を取得した後、子プロセスを作成する。
メインプロセスは、開始時刻までスリープして終了し、後に続くプログラムが開始 時刻に実行されるようにする。
また、子プロセスは、終了時刻までスリープした後、シグナルを自プロセスグループ に送信して終了する。

子プロセスのプロセスIDは、自プロセスグループのスケジュールのterminator値で 管理される。
親プロセスは、子プロセスを看取らないで終了してしまうので、子プロセスはinitに 引き取られる。
子プロセスのゾンビ化を回避するため、SIGCHLDのハンドラにSIG_IGN、 フラグにSA_NOCLDWAITを指定する。

Function Documentation

int activate ( int  argc,
char *  argv[] 
)

データベースにある自プロセスグループのスケジュールを有効にする。

正常に有効化ができると、開始時刻までブロックし、開始時刻とともにstdinの 内容をそのままstdoutに受け流し、終了する。
終了時刻には、自プロセスグループに指定のシグナルを送信する。
送信されるシグナルのデフォルトはSIGTERM。
開始時刻後に再度実行された場合は、終了時刻が再スケジュールされる。

Parameters
[in]argcargc値
[in]argvargv値
Returns
成功時は0、失敗時には1、コマンドラインオプションが不正な場合は2を返す。