(57)【要約】【課題】設定ファイルに原因のあるあらゆる起動失敗に適用でき、かつ簡便に実装でき、設定ファイルの不具合によってプログラムの実行が不可能になることを防止する記憶媒体を提供すること。【解決手段】設定ファイル３を解釈するモジュール１と、起動の瞬間にそのときの時刻をタイムスタンプファイル５に書き出し、また、起動に成功した場合前記タイムスタンプファイルを削除するタイムスタンプファイル記録モジュール４と、前記設定ファイル３の更新時刻と前記タイムスタンプファイル５に記されたタイムスタンプとの時間差を検知する検知モジュール２とを備え、起動の際、前記タイムスタンプファイル５が存在していれば前記設定ファイル３の更新時刻を前記検知モジュール２によって比較し、前記設定ファイル３の更新時刻の方が古ければ前記設定ファイル３を無視するプログラムを記した記録媒体。【選択図】　　　図１
2004062547.tif 000002
【特許請求の範囲】
【請求項１】
設定ファイルを解釈するモジュールと、起動の瞬間にそのときの時刻をタイムスタンプファイルに書き出し、また、起動に成功した場合前記タイムスタンプファイルを削除するモジュールと、前記設定ファイルの更新時刻と前記タイムスタンプファイルに記されたタイムスタンプとの時間差を検知する検知モジュールと、を備え、
起動の際、前記タイムスタンプファイルが存在していれば前記設定ファイルの更新時刻を前記検知モジュールによって比較し、前記設定ファイルの更新時刻の方が古ければ前記設定ファイルを無視するプログラムを記録したことを特徴とする記録媒体。
【請求項２】
設定ファイルを解釈するモジュールと、起動の瞬間にそのときの時刻をタイムスタンプファイルに書き出し、また、起動に成功した場合前記タイムスタンプファイルを削除するモジュールと、前記設定ファイルの更新時刻と前記タイムスタンプファイルに記されたタイムスタンプとの時間差を検知する検知モジュールと、設定ファイルを変更するモジュールと、を備え、
前記設定ファイルを変更するモジュールが変更前の設定ファイルを事前に保存し、起動に失敗することがあった場合、次回の起動時に、前記設定ファイルを解釈するモジュールが自動的に前記変更前の設定ファイルを読み込む機能を有するプログラムを記録したことを特徴とする記録媒体。
【請求項３】
ログ記録モジュールとログ記録領域とを備え、ログに起動成功／失敗の事実を書き残すプログラムを記録したことを特徴とする請求項１又は２に記載の記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータを起動するプログラムを記録した記録媒体に関するものである。
【０００２】
【従来の技術】
特開２００１−１５５６７７公報には、「プログラムの暴走防止方法、そのためのコンピューターシステムと暴走防止プログラム」と題する技術が開示されている。この技術は、プログラムが占有するプロセスにおいて、変数領域とスタック領域との間にスタックオーバーフロー検出領域を設け、このスタックオーバーフロー検出領域にスタックが到達するときプログラムの実行の安全性を高めるものである。
しかし、この実施にあたっては、プログラムへのメモリの割り当て方法を変更する必要があり、これは一般にオペレーティングシステム（以下「ＯＳ」）を変更しなければならないことを意味する。
設定ファイルを必要とするプログラムが内部に言語処理系を有し、設定ファイルがその言語によって記述される場合、内部の言語処理系がメモリ限界を認識して設定ファイルの実行を打ち切っても、プログラム自体は、設定ファイルが途中までロードされた状態から起動させることができる。このようにして設定ファイルの不具合を処理しているプログラムの例として、ＧＮＵ　Ｅｍａｃｓ（ソフトバンク，１９９３）を挙げることができる。
【０００３】
【発明が解決しようとする課題】
ただし、この手法は、一般化にあたって、以下の短所を有している。すなわち、１）設定ファイルを用いるプログラムが必ずしも内部言語をもっているとは限らない。２）設定ファイルが原因でプログラムが異常終了する原因は、必ずしもメモリオーバーフローであるとは限らない。
近年のソフトウェアアプリケーションでは、ユーザごとに設定ファイルを用意し、起動の際にそのファイルを読み込むことによって、最適な環境をカスタマイズできるようにできるものが少なくない。しかし、設定ファイルの記述力が充分に強い場合に、設定の不具合によってプログラムの起動が不可能になることがある。
図１２は従来技術においてプログラムの起動が不可能になる場合を説明する図である。この図では、前述のごとく、ユーザごとに設定ファイルを用意し、起動の際にそのファイルを読み込んでいるが、例えば、スタックオーバーフローによる異常終了によってプログラムを起動することができない。
このような危険があるにもかかわらず、実際のソフトウェアにあっては、必ずしもこの問題について対策が取られているわけではない。本発明では、これに対して、設定ファイルに原因のあるあらゆる起動失敗に適用でき、かつ簡便に実装できるアプローチを考える。
したがって、本発明の目的は、設定ファイルに原因のあるあらゆる起動失敗に適用でき、かつ簡便に実装でき、設定ファイルの不具合によってプログラムの実行が不可能になることを防止する記録媒体を提供することにある。
【０００４】
【課題を解決するための手段】
前記の課題を解決するために、請求項１記載の発明では、設定ファイルを解釈するモジュールと、起動の瞬間にそのときの時刻をタイムスタンプファイルに書き出し、また、起動に成功した場合前記タイムスタンプファイルを削除するモジュールと、前記設定ファイルの更新時刻と前記タイムスタンプファイルに記されたタイムスタンプとの時間差を検知する検知モジュールとを備え、起動の際、前記タイムスタンプファイルが存在していれば前記設定ファイルの更新時刻を前記検知モジュールによって比較し、前記設定ファイルの更新時刻の方が古ければ前記設定ファイルを無視するプログラムを記した記録媒体を最も主要な特徴とする。
請求項２記載の発明では、設定ファイルを解釈するモジュールと、起動の瞬間にそのときの時刻をタイムスタンプファイルに書き出し、また、起動に成功した場合前記タイムスタンプファイルを削除するモジュールと、前記設定ファイルの更新時刻と前記タイムスタンプファイルに記されたタイムスタンプとの時間差を検知する検知モジュールと、設定ファイルを変更するモジュールとを備え、前記設定ファイルを変更するモジュールが変更前の設定ファイルを事前に保存し、起動に失敗することがあった場合、次回の起動時に、前記設定ファイルを解釈するモジュールが自動的に前記変更前の設定ファイルを読み込む機能を有するプログラムを記した記録媒体を最も主要な特徴とする。
請求項３記載の発明では、ログ記録モジュールとログ記録領域とを備え、ログに起動成功／失敗の事実を書き残すプログラムを記した請求項１又は２に記載の記録媒体を主要な特徴とする。
【０００５】
【発明の実施の形態】
以下、図面により本発明の実施の形態を詳細に説明する。図１は本発明による記録媒体の第１の実施の形態を示すブロック図である。以下、同じ構成要素には同じ参照番号が付せられている。このコンピューターシステムのプログラムにおいて、設定ファイル解釈モジュール１は設定ファイル３を読み込み、プログラムの初期化を行うモジュールである。
時刻比較モジュール２は設定ファイル３の最終更新時刻とタイムスタンプファイル５が表す時刻とを比較する（検知する）モジュールである。設定ファイル３にはプログラムの初期化に関する情報が記されている。タイムスタンプ記録（作成／削除）モジュール４は現在時刻を記したタイムスタンプファイル５を作成あるいは削除するモジュールである。タイムスタンプファイル５はプログラムの起動時刻を記録するファイルである。
記録媒体は設定ファイル３を解釈する設定ファイル解釈モジュール１と、起動の瞬間にそのときの時刻をタイムスタンプファイル５に書き出し、また、起動に成功した場合タイムスタンプファイル５を削除する作成／削除モジュール４と、設定ファイル３の更新時刻とタイムスタンプファイル５に記されたタイムスタンプとの時間差を検知する時刻比較／検知モジュール２とを備えている。
起動の際、タイムスタンプファイル５が存在していれば、設定ファイル３の更新時刻を時刻比較／検知モジュール２によって比較し、設定ファイルの更新時刻の方が古ければ設定ファイル３を無視するプログラムを記している。
【０００６】
図２は本発明による記録媒体の第２の実施の形態を示すブロック図である。このコンピューターシステムのプログラムは設定ファイル３を解釈する設定ファイル解釈モジュール１と、起動の瞬間にそのときの時刻をタイムスタンプファイル５に書き出し、また、起動に成功した場合、タイムスタンプファイル５を削除するタイムスタンプ記録（作成／削除）モジュール４と、設定ファイル３の更新時刻とタイムスタンプファイル５に記されたタイムスタンプとの時間差を検知する時刻比較／検知モジュール２と、設定ファイルを変更する設定ファイル変更モジュール８とを備えている。
設定ファイル変更モジュール８は変更前の設定ファイル９を事前に保存し、起動に失敗することがあった場合、次回の起動時に、設定ファイル３を解釈する設定ファイル解釈モジュール１が自動的に変更前の設定ファイル９を読み込む機能を有する。これらの機能を有するプログラムは記録媒体に記憶されている。
【０００７】
図３は本発明による記録媒体の第３の実施の形態を示すブロック図である。記録媒体は設定ファイル３を解釈する設定ファイル解釈モジュール１と、起動の瞬間にそのときの時刻をタイムスタンプファイル５に書き出し、また、起動に成功した場合タイムスタンプファイル５を削除する作成／削除モジュール４と、設定ファイル３の更新時刻とタイムスタンプファイル５に記されたタイムスタンプとの時間差を検知する時刻比較／検知モジュール２とを備えている。
起動の際、タイムスタンプファイル５が存在していれば、設定ファイル３の更新時刻を時刻比較／検知モジュール２によって比較し、設定ファイルの更新時刻の方が古ければ設定ファイル３を無視するプログラムを記している。ログ記録モジュール６とログ記録領域７とを備え、ログに起動成功／失敗の事実を書き残す機能を有している。
図４は本発明による記録媒体を備えたコンピューターシステムの第１の実施の形態を示すブロック図である。入出力装置２１はプログラムとそのユーザ３１のインターフェースを担当する部分である。記憶装置２２は本実施の形態においては、設定ファイル３およびタイムスタンプファイル５を記憶する記録媒体である。なお、その他のモジュール２９は本実施の形態のプログラム（点線で囲った部分）中、動作の解説に直接関係しない部分を示している。
【０００８】
図５は本実施の形態の動作を示すフローチャートである。起動動作開始において、タイムスタンプファイル５が存在しているかどうかを判断し（Ｓ１）、存在してないならば、タイムスタンプファイル５を削除する作成／削除モジュール４がタイムスタンプファイル５を作成あるいは更新し、タイムスタンプを記憶する（Ｓ３）。
次に、設定ファイル３を解釈する設定ファイル解釈モジュール１が設定ファイル３を読み込み、設定を行う（Ｓ６）。次いで、設定処理は正常に終了できたかどうかを判断して（Ｓ７）、正常に終了して無いならば、プログラムの異常終了とする。
また、Ｓ１でタイムスタンプファイル５が存在しているならば、タイムスタンプファイル５の時刻が設定ファイル３の更新時刻より新しいかどうかを判断（Ｓ２）し、新しくないならば、タイムスタンプファイル５を削除する作成／削除モジュール４がタイムスタンプファイル５を更新する。
次に、設定ファイル解釈モジュール１が設定ファイル３を読み込み、設定を行う（Ｓ６）。次いで、設定処理は正常に終了できたかどうかを判断して（Ｓ７）、正常に終了して無いならば、プログラムの異常終了とする。
Ｓ２でタイムスタンプファイル５の時刻が設定ファイル３の更新時刻より新しいならば、タイムスタンプファイル５を削除する作成／削除モジュール４がタイムスタンプファイル５を削除し、起動動作を終了する。
【０００９】
図６は起動成功時の状態において記録媒体を示す概略図である。図７は起動失敗時の記録媒体の状態を示す概略図である。起動に失敗し、かつ設定ファイル３を変更しない場合、設定ファイル３はタイムスタンプファイル５より古いことになるので、フローチャートの第一の条件判断により、誤った設定ファイル３の再適用が回避される。
また、起動失敗後に設定ファイル３を修正すると、タイムスタンプファイル５との時刻関係が変化し、新しくした設定ファイル３が起動時に適用できるようになる。このように、タイムスタンプファイルを書き出すことによって、異常終了の理由にかかわらず、次回起動時に望ましい起動手順を取ることができる。
【００１０】
図８は本発明による記録媒体を備えたコンピューターシステムの第２の実施の形態を示すブロック図である。入出力装置２１はプログラムとそのユーザ３１のインターフェースを担当する部分である。記憶装置２２は本実施の形態では、設定ファイル３およびタイムスタンプファイル５を記憶する記録媒体である。なお、その他のモジュール２９は本実施の形態のプログラム（点線で囲った部分）中、動作の解説に直接関係しない部分を示している。
設定ファイル解釈モジュール１は設定ファイル３あるいは予備の設定ファイル９を読み込み、プログラムの初期化を行うモジュールである。また、検知（時刻比較）モジュール２、タイムスタンプ記録（作成／削除）モジュール４、タイムスタンプファイル５があり、設定ファイル保存モジュール８は設定ファイル３の写しを記憶装置２２に作る。
９は設定ファイル保存モジュール８によって作られた設定ファイル３の写しである。２１は入出力装置であり、そして記憶装置２２は設定ファイル３、タイムスタンプファイル５および設定ファイルの写し９を記憶する記録媒体である。
プログラムのその他の部分２９は実施の形態のプログラム（点線で囲った部分）中、動作の解説に直接関係しない部分である。
【００１１】
図９は第２の実施の形態の動作を説明するフローチャートである。起動動作開始において、タイムスタンプファイル５が存在しているかどうかを判断し（Ｓ１１）、存在してないならば、タイムスタンプファイル５を削除する作成／削除モジュール４がタイムスタンプファイル５を作成あるいは更新し、タイムスタンプを記憶する（Ｓ１３）。
次に、設定ファイル解釈モジュール１が設定ファイル３を読み込み、設定を行う（Ｓ１６）。次いで、設定処理は正常に終了できたかどうかを判断して（Ｓ１７）、正常に終了して無いならば、プログラムの異常終了とする。
また、Ｓ１１でタイムスタンプファイル５が存在しているならば、タイムスタンプファイル５の時刻が設定ファイル３の更新時刻より新しいかどうかを判断（Ｓ１２）し、新しくないならば、Ｓ１３のステップへ移行する。
新しいならば、設定ファイル解釈モジュール１が設定ファイル９を読み込み、設定を行う（Ｓ１４）。次いで、設定処理は正常に終了できたかどうかを判断して（Ｓ１７）、正常に終了して無いならば、プログラムの異常終了とする。
Ｓ１７で設定処理が正常に終了しているならば、タイムスタンプファイル５を削除するモジュール４がタイムスタンプファイル５を更新し（Ｓ１５）、そして設定ファイル保存モジュール８は設定ファイル３の写しを設定ファイルの写し９に保存し、起動動作を終了する。
【００１２】
図１０は起動成功時の状態において記録媒体を示す概略図である。図１１は起動失敗時の記録媒体の状態を示す概略図である。起動に失敗した直後に再び起動を試みた場合に、図９のフローチャートにしたがって、設定ファイル３ではなく設定ファイルの写し９がプログラムに適用されることになる。
設定ファイル３を変更しない場合、設定ファイル３はタイムスタンプファイル５より古いことになるので、フローチャートの第一の条件判断により、誤った設定ファイル３の再適用が回避される。
また、起動失敗後に設定ファイル３を修正すると、タイムスタンプファイル５との時刻関係が変化し、やはり図９のフローチャートにしたがって、新しくした設定ファイル３が起動時に適用できるようになる。
【００１３】
【発明の効果】
以上説明したように、請求項１によれば、ＯＳ等の特別な変更を必要とすることなく、設定ファイルの不具合による起動の失敗を繰り返さないようにすることができる。
請求項２によれば、ＯＳ等の特別な変更を必要とすることなく、設定ファイルの不具合による起動の失敗を繰り返さないことに加えて、設定失敗前の設定を自動的に呼び戻すことができる。
請求項３および４によれば、ＯＳ等の特別な変更を必要とすることなく、設定ファイルの不具合による起動の失敗を繰り返さず、また、設定失敗前の設定を自動的に呼び戻すことができることに加えて、さらに、設定ファイルの設定を誤った、あるいは直前に成功した設定ファイルを使用した、などの事実をログに残し、将来の解析に役立てることができる。
【図面の簡単な説明】
【図１】本発明による記録媒体の第１の実施の形態を示すブロック図である。
【図２】本発明による記録媒体の第２の実施の形態を示すブロック図である。
【図３】本発明による記録媒体の第３の実施の形態を示すブロック図である。
【図４】本発明による記録媒体を備えたコンピューターシステムの第１の実施の形態を示すブロック図である。
【図５】本実施の形態の動作を示すフローチャートである。
【図６】起動成功時の状態において記録媒体を示す概略図である。
【図７】起動失敗時の記録媒体の状態を示す概略図である。
【図８】本発明による記録媒体を備えたコンピューターシステムの第２の実施の形態を示すブロック図である。
【図９】第２の実施の形態の動作を説明するフローチャートである。
【図１０】起動成功時の状態において記録媒体を示す概略図である。
【図１１】起動失敗時の記録媒体の状態を示す概略図である。
【図１２】従来技術においてプログラムの起動が不可能になる場合を説明する図である。
【符号の説明】
１　設定ファイル解釈モジュール
２　時刻比較（検知）モジュール
３　設定ファイル
４　タイムスタンプ記憶（作成／削除）モジュール
５　タイムスタンプファイル
６　ログ記録モジュール
７　ログファイル
８　設定ファイル保存モジュール
９　予備の設定ファイル
２１　入出力装置
２２　記録媒体（記憶装置）
【図１】
2004062547.tif 000003
【図２】
2004062547.tif 000004
【図３】
2004062547.tif 000005
【図４】
2004062547.tif 000006
【図５】
2004062547.tif 000007
【図６】
2004062547.tif 000008
【図７】
2004062547.tif 000009
【図８】
2004062547.tif 000010
【図９】
2004062547.tif 000011
【図１０】
2004062547.tif 000012
【図１１】
2004062547.tif 000013
【図１２】
2004062547.tif 000014