(57)【要約】【課題】プログラムの二重起動防止処理を効率的に行えるようにしたプロセス管理方法及び装置及びプロセス管理装置の制御プログラム及び記憶媒体を提供する。【解決手段】実行されたプログラムを検出し（ステップＳ４０１）、前記実行された複数のプログラムが互いに情報の授受を行い、伝達された情報を元に行うべきプログラム動作の判断を行う（ステップＳ４０８）ように制御する。【選択図】　　　図４
2004102622.tif 000002
【特許請求の範囲】
【請求項１】
所定の情報処理を行うために動作するプロセスの管理方法において、
システム内において動作している既存のプロセスを認識する認識ステップと、
新たにプロセスを起動させる起動ステップと、
前記起動ステップにおいて起動されたプロセスが、前記認識ステップにおいて認識されたプロセスと排他性があるか否かを判定する判定ステップと、
前記判定ステップで、前記認識ステップにおいて認識されたプロセスと、前記起動ステップにおいて起動されたプロセスとが排他性のあるものであると判定された場合に、前記認識ステップにおいて認識されたプロセスに代えて、前記起動ステップにおいて起動されたプロセスの実行を継続する実行ステップと、
を備えたことを特徴とするプロセス管理方法。
【請求項２】
前記起動ステップにおいて起動されたプロセスと、前記認識ステップにおいて認識されたプロセスのいずれのプロセスの動作状況が優れているか否かを判断する判断ステップを更に備え、
前記実行ステップでは、前記判断ステップが前記起動ステップにおいて起動されたプロセスの動作状況がより優れていると判断した場合に、前記起動ステップにおいて起動されたプロセスの実行を継続することを特徴とする請求項１に記載のプロセス管理方法。
【請求項３】
前記プロセスは、周辺装置のステータスを管理するべく動作するプロセスであり、前記実行ステップでは、前記判断ステップが前記起動ステップにおいて起動されたプロセスの動作状況がより優れていると判断した場合に、前記認識ステップにおいて認識されたプロセスを終了し、前記起動ステップにおいて起動されたプロセスの実行を継続することを特徴とする請求項２に記載のプロセス管理方法。
【請求項４】
前記実行ステップにおけるプロセスの動作状況の優劣は、前記プロセスの所有者名によって判断されることを特徴とする請求項２又は３に記載のプロセス管理方法。
【請求項５】
前記排他性があるとは、前記複数のプロセスが、同等の機能を有するアプリケーションに起因するものであることを特徴とする請求項１に記載のプロセス管理方法。
【請求項６】
所定の情報処理を行うために動作するプロセスの管理装置において、
システム内において動作している既存のプロセスを認識する認識手段と、
新たにプロセスを起動させる起動手段と、
前記起動手段において起動されたプロセスが、前記認識手段において認識されたプロセスと排他性があるか否かを判定する判定手段と、
前記判定手段で、前記認識手段において認識されたプロセスと、前記起動手段において起動されたプロセスとが排他性のあるものであると判定された場合に、前記認識手段において認識されたプロセスに代えて、前記起動手段において起動されたプロセスの実行を継続する実行手段と、
を備えたことを特徴とするプロセス管理装置。
【請求項７】
前記起動ステップにおいて起動されたプロセスと、前記認識ステップにおいて認識されたプロセスのいずれのプロセスの動作状況が優れているか否かを判断する判断手段を更に備え、
前記実行手段では、前記判断手段が前記起動手段において起動されたプロセスの動作状況がより優れていると判断した場合に、前記起動手段において起動されたプロセスの実行を継続することを特徴とする請求項６に記載のプロセス管理装置。
【請求項８】
前記プロセスは、周辺装置のステータスを管理するべく動作するプロセスであり、前記実行手段では、前記判断手段が前記起動手段において起動されたプロセスの動作状況がより優れていると判断した場合に、前記認識手段において認識されたプロセスを終了し、前記起動手段において起動されたプロセスの実行を継続することを特徴とする請求項７に記載のプロセス管理装置。
【請求項９】
前記実行手段におけるプロセスの動作状況の優劣は、前記プロセスの所有者名によって判断されることを特徴とする請求項７又は８に記載のプロセス管理装置。
【請求項１０】
排他性があるとは、前記複数のプロセスが、同等の機能を有するアプリケーションに起因するものであることを特徴とする請求項６に記載のプロセス管理装置。
【請求項１１】
所定の情報処理を行うために動作するプロセスの管理装置を制御するためのコンピュータ読み取り可能な制御プログラムにおいて、
システム内において動作している既存のプロセスを認識する認識ステップと、新たにプロセスを起動させる起動ステップと、前記起動ステップにおいて起動されたプロセスが、前記認識ステップにおいて認識されたプロセスと排他性があるか否かを判定する判定ステップと、前記判定ステップで、前記認識ステップにおいて認識されたプロセスと、前記起動ステップにおいて起動されたプロセスとが排他性のあるものであると判定された場合に、前記認識ステップにおいて認識されたプロセスに代えて、前記起動ステップにおいて起動されたプロセスの実行を継続する実行ステップとをコンピュータに実行させるためのプログラムコードを含むことを特徴とするプロセス管理装置の制御プログラム。
【請求項１２】
請求項１１に記載の制御プログラムを格納したことを特徴とする記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータにて所定の処理を行うプロセス管理方法及び装置及びこのプロセス管理装置を制御するための制御プログラム及びこの制御プログラムを格納した記憶媒体に関する。
【０００２】
【従来の技術】
コンピュータ上で任意の処理を行うプログラムにおいて、同一プログラムを同時に複数起動すること（以下、二重起動と記述する。）を許可するプログラムと、許可しないプログラムとがある。
【０００３】
後者のプログラムは、例えば特定のデータファイルにアクセスし、これを変更する機能を持つアプリケーションプログラム等であり、このようなプログラムでは、二重起動した同一プログラムが各データファイルを非同期に変更し、整合性がとれなくなるケースを防ぐために、二重起動を許可しない。
【０００４】
この場合、従来のコンピュータでは、アプリケーションプログラム等のプログラムが起動されると、これと同時にコンピュータのメモリ等に特定のファイルを生成し、そのファイル内に当該プログラムが動作中である旨の情報を格納する。そして、そのファイルが存在している場合には、その後に同一または他のプログラムの起動指示があっても、その起動を行わないようにする。その後、動作中のプログラムが終了した時点でファイルを消去することで、同一、または他のプログラムにも起動権限を与える。
【０００５】
これにより、同一プログラムの同時起動がなくなり、且つ先行して起動されたプログラムが終了次第、別のプログラムの起動が可能となる。
【０００６】
また、前記起動制御を行うプログラムが異常終了し、メモリ内に生成したファイルが残存してしまうケースでも、先行プログラム自体が終了していれば、後発プログラムの起動が可能となるようにした手法が提案されている（特許文献１参照）。
【０００７】
【特許文献１】
特開平１１−２９６３８３号
【０００８】
【発明が解決しようとする課題】
しかしながら、上述した従来のプロセス管理方法は、いずれも先行して起動されたプログラムが存在した場合、後発プログラムの起動を許可しないという制御方法であったため、先行起動プログラムの動作が不完全で、後発プログラムの方がより良好な動作を行える場合でも、一様に後発プログラムが終了し、先行プログラムがそのまま存続するという欠点があった。
【０００９】
例えば、アプリケーションプログラムによっては、起動時のコンディションにより何らかの機能の提供が不可能な場合でも、その他の機能の提供が可能な場合には、そのまま起動するケースがある。このとき、従来のプログラム起動制御方法では、この起動済みプログラムが提供不能であった機能を、後発プログラムが提供可能となった場合でも、その後発プログラムの起動が許可されないため、アプリケーションとして完全な機能提供をしないまま、プログラムの実行が続くことになる。
【００１０】
本発明は、上述した従来技術の有する問題点を解消するためになされたもので、その目的は、プログラムの二重起動防止処理を効率的に行えるようにしたプロセス管理方法及び装置及びプロセス管理装置の制御プログラム及び記憶媒体を提供することである。
【００１１】
【課題を解決するための手段】
上記目的を達成するために、本発明のプロセス管理方法は、所定の情報処理を行うために動作するプロセスの管理方法において、システム内において動作している既存のプロセスを認識する認識ステップと、新たにプロセスを起動させる起動ステップと、前記起動ステップにおいて起動されたプロセスが、前記認識ステップにおいて認識されたプロセスと排他性があるか否かを判定する判定ステップと、前記判定ステップで、前記認識ステップにおいて認識されたプロセスと、前記起動ステップにおいて起動されたプロセスとが排他性のあるものであると判定された場合に、前記認識ステップにおいて認識されたプロセスに代えて、前記起動ステップにおいて起動されたプロセスの実行を継続する実行ステップと、を備えたことを特徴とする。
【００１２】
また、上記目的を達成するために、本発明のプロセス管理装置は、所定の情報処理を行うために動作するプロセスの管理装置において、システム内において動作している既存のプロセスを認識する認識手段と、新たにプロセスを起動させる起動手段と、前記起動手段において起動されたプロセスが、前記認識手段において認識されたプロセスと排他性があるか否かを判定する判定手段と、前記判定手段で、前記認識手段において認識されたプロセスと、前記起動手段において起動されたプロセスとが排他性のあるものであると判定された場合に、前記認識手段において認識されたプロセスに代えて、前記起動手段において起動されたプロセスの実行を継続する実行手段と、を備えたことを特徴とする。
【００１３】
また、上記目的を達成するために、本発明のプロセス管理装置の制御プログラムは、所定の情報処理を行うために動作するプロセスの管理装置を制御するためのコンピュータ読み取り可能な制御プログラムにおいて、システム内において動作している既存のプロセスを認識する認識ステップと、新たにプロセスを起動させる起動ステップと、前記起動ステップにおいて起動されたプロセスが、前記認識ステップにおいて認識されたプロセスと排他性があるか否かを判定する判定ステップと、前記判定ステップで、前記認識ステップにおいて認識されたプロセスと、前記起動ステップにおいて起動されたプロセスとが排他性のあるものであると判定された場合に、前記認識ステップにおいて認識されたプロセスに代えて、前記起動ステップにおいて起動されたプロセスの実行を継続する実行ステップとをコンピュータに実行させるためのプログラムコードを含むことを特徴とする。
【００１４】
更に、上記目的を達成するために、本発明の記憶媒体は、前記プロセス管理装置の制御プログラムを格納したことを特徴とする。
【００１５】
【発明の実施の形態】
以下、本発明の各実施の形態を図面に基づき説明する。
【００１６】
（第一実施の形態）
まず、本発明の第一実施の形態を、図１乃至図４を用いて説明する。
【００１７】
図１は、本発明の第一実施の形態に係るプロセス管理装置を有する印刷システムの構成を示すブロック図であり、同図において、１０１はコンピュータで、プリンタ１０２が外部インタフェース１０３を介して接続されている。
【００１８】
コンピュータ１０１は、入力インタフェース１０４、ＣＰＵ（中央演算処理装置）１０５、ＲＯＭ（リードオンリーメモリ）１０６、ＲＡＭ（ランダムアクセスメモリ）１０７、外部記憶装置１０８、出力インタフェース１０９、表示部１１０、キーボード１１１、マウス１１２及び入出力インタフェース１１３を有している。
【００１９】
入力インタフェース１０４は、後述するキーボード１１１及びマウス１１２から入力された情報を受け取るものである。ＣＰＵ１０５は、コンピュータ１０１全体の制御を司るものである。ＲＯＭ１０６には、初期設定プログラム（ＢＩＯＳ等を含む）がストアされている。ＲＡＭ１０７には、データが記憶されるもので、図柄情報記憶部１０７ａ、印刷データ記憶部１０７ｂ及びプログラムロード領域１０７ｃを有し、後述する外部記憶装置１０８にストアされている制御プログラムに従って各部を制御するものである。外部記憶装置１０８には、ステータスモニタプログラムやＯＳが記憶されている。出力インタフェース１０９は、出力データを後述する表示部１１０に送出するものである。表示部１１０は、データを表示するもので、ＣＲＴ（陰極線管）或いは液晶表示器等から成るものである。キーボード１１１及びマウス１１２は、データを入力するものである。入出力インタフェース１１３は、コンピュータ１０１とプリンタ１０２との間でデータのやり取りを行うものである。
【００２０】
尚、プリンタ１０２からのステータスは、例えば、米国セントロニクス社のインタフェース１０３を介して取得され、上述したステータスモニタプログラムが認識する。このステータスモニタプログラムは、ＯＳ（オペレーティング・システム）を制御して、図３に示すような画面をコンピュータ１０１の表示部１１０に表示する処理を制御する。
【００２１】
本実施の形態においては、外部インタフェース１０３として、米国セントロニクス社のインタフェースを用いているが、ＵＳＢインタフェースやＳＣＳＩインタフェース等を用いても良い。
【００２２】
次に、各種のプログラムについて説明する。
【００２３】
アプリケーションプログラムは、作画環境と印刷環境とを提供し、印刷開始を命令するためのプログラムである。また、データスプールプログラムは、生成された印刷データを受け取り、外部記憶装置１０８内に一旦蓄積するためのプログラムである。また、データ送信処理プログラムは、外部記憶装置１０８に蓄積された印刷データを任意のサイズの印刷データブロックに分割して、プリンタドライバに繰り返しデータ転送を要求するためのプログラムである。また、インタフェース制御プログラムは、セントロニクスパラレルインタフェースを通じてデータの書き込み及び読み込みを実際に行い、プリンタ１０２の受信バッファがフルになった等のデータ受信が即座に実行できない状況において、ビジー信号を発光する役割を担うプログラムである。また、印刷データ生成プログラムは、アプリケーションプログラムに従って作画された図柄情報をプリンタコマンドの変換するためのプログラムである。また、データ送信制御プログラムは、データ送信処理プログラムから来るデータ転送要求を受け付け、入力された印刷データブロックをパースしてプリンタコマンドに区切りを検出するためのプログラムである。ここで検出されたコマンドの区切り位置は、後に印刷がキャンセルされた場合にコマンドの区切りまで送信する処理のために必要となる。
【００２４】
図２は、本発明の一実施の形態に係るプロセス管理装置の動作の流れを示すフローチャートであり、同図において、２０１は実行中のプログラム「アプリケーションプログラム（０）」、即ち、先行起動済みプログラムのメッセージループを示す。即ち、ユーザ、プログラム内の他のスレッド、または他のプログラム等からのメッセージが発行される毎に、ステップＳ２０２〜ステップＳ２０６を繰り返す処理を示す。
【００２５】
また、図２において、２１１はプログラム起動時に行う処理「アプリケーションプログラム（１）の起動時処理」で、後発プログラムを示す。
【００２６】
まず、先行起動済みプログラム２０１の処理動作について説明する。
【００２７】
先行起動済みプログラム２０１が起動されると、まず、ステップＳ２０２で、後発プログラム２１１から受け取ったメッセージの内容を判断する。その判断の結果、動作状況の問い合わせのメッセージであれば、ステップＳ２０３にて動作状況を調べ、その調べた結果を後発プログラム２１１に対して通知する。また、後発プログラム２１１から受け取ったメッセージが終了要求のメッセージであれば、ステップＳ２０４にてプログラムの実行中断のために必要となる処理を行い、ステップＳ２０７にて先行起動済みプログラム２０１の処理動作を終了する。更に、後発プログラム２１１から受け取ったメッセージがその他のメッセージであれば、ステップＳ２０５にてその他の処理を行う。
【００２８】
前記ステップＳ２０３乃至ステップＳ２０５の処理を終了後は、いずれもステップＳ２０６にてメッセージループがプログラム終了要求を処理したか否かを判断する。そして、プログラム終了要求を処理していないと判断された場合は、前記ステップＳ２０２へ戻る。また、前記ステップＳ２０６において、プログラム終了要求を処理したと判断された場合は、前記ステップＳ２０７にて先行起動済みプログラム２０１の処理動作を終了する。
【００２９】
次に、後発プログラム２１１の処理動作について説明する。
【００３０】
後発プログラム２１１が起動されると、まず、ステップＳ２１２で、先行起動済みプログラム２０１が有るか否かを判断する。この先行起動済みプログラム２０１が有るか否かの判断は、一般的なアプリケーションプログラムと同様に、ユニークな名前を持つミューテックスやセマフォ等のオブジェクトを作成することを前提とし、それがオープンできるか否かを判断する方法や、同一タイトルを持つウィンドウがあるか否かを判断する方法等、様々な排他的手法を用いて行うことができる。
【００３１】
前記ステップＳ２１２において、先行起動済みプログラム２０１が無いと判断された場合は、ステップＳ２１６に進んで、後発プログラム２１１は起動を続行する。
【００３２】
一方、前記ステップＳ２１２において、先行起動済みプログラム２０１が有ると判断された場合は、ステップＳ２１３に進んで、先行起動済みプログラム２０１に対する動作状況の問い合せを行う。この問い合せの方法としては、様々なプログラム間通信の手法が存在するが、ここでは、メッセージループを利用したメッセージによる通信を行う例を示す。
【００３３】
次に、ステップＳ２１４で、先行起動済みプログラムの動作状況と自身（後発プログラム２１１）の動作状況とを比較する。ここで、先行起動済みプログラム２０１の動作状況が自身と同じか、自身よりも優れていると判断された場合は、ステップＳ２１７に進んで、自身の起動を中断し、後発プログラム２１１の処理動作を終了する。
【００３４】
一方、前記ステップＳ２１４において、動作状況が、先行起動済みプログラム２０１よりも自身の方が優れていると判断された場合は、ステップＳ２１５に進んで、先行起動済みプログラム２０１に対して終了要求を出し、その後、ステップＳ２１６にて、自身の起動を続行する。
【００３５】
上述したように、本実施の形態に係るプロセス管理装置によれば、二重起動発生時に、各プログラムの動作状況から判断して適切なプログラムを存続させるという手法を採ることにより、プログラムの二重起動の防止と共に、不完全動作状況にあるプログラムの起動存続を防ぐことが可能となる。
【００３６】
次に、本発明を、印刷監視アプリケーションプログラムに応用した具体例について説明する。
【００３７】
印刷監視アプリケーションは、一般的にステータスモニタ等と呼ばれ、ホストコンピュータに接続されたプリンタを使用して印刷を行う際、プリンタの動作状況や印刷用紙詰まり或いはインク切れやトナー切れ等のエラー情報をプリンタから受信すると共に、受信した情報等をホストコンピュータ１０１の表示部１１０等に表示する。
【００３８】
また、ステータスモニタによっては、印刷ジョブの情報も取得し、そのジョブの一時停止や印刷中止といった機能を有するものもある。
【００３９】
図３は、このステータスモニタの外観の一例を示す図であり、同図において、３０１は印刷中止ボタンである。
【００４０】
図４は、このステータスモニタの一般的な処理動作の流れを示すフローチャートである。
【００４１】
図４において、起動されたステータスモニタは、まず、ステップＳ４０１にて自身（ステータスモニタ）を起動したユーザを確認し、それをステータスモニタ使用者（プログラム実行元）として記憶する。続いてメッセージループ（スップＳ４０６〜ステップＳ４１３）を開始する。続いて、ステータス情報取得処理ループ（ステップＳ４０２〜ステップＳ４０５）も開始する。
【００４２】
このステータス情報取得ループでは、まず、ステップＳ４０２にてプリンタとの双方向通信等によりプリンタの情報（プリンタステータス情報）を取得する。次に、ステップＳ４０３にてジョブの情報を取得する。これらの情報を元に、次のステップＳ４０４にて図１のコンピュータ１０１の表示部１１０への表示に必要な情報を整理して、その情報を表示部１１０に表示すると共に、メッセージループに対してメッセージを送信する。次に、ステップＳ４０５へ進んで、プログラム終了フラグが立っているか否かを判断する。そして、プログラム終了フラグが立っていないと判断された場合は、前記ステップＳ４０２へ戻る。また、前記ステップＳ４０５において、プログラム終了フラグが立っていると判断された場合は、本処理動作を終了する。
【００４３】
一方、前記ステータス情報取得ループにおけるステップＳ４０４において送信されたメッセージを受け取ったメッセージループは、まず、ステップＳ４０６で、前記ステータス情報取得ループから受け取ったメッセージの内容を判断する。そして、前記ステータス情報取得ループから受け取ったメッセージが表示要求メッセージである場合は、ステップＳ４０７へ進んで、プリンタ１０２のステータスを表示し、続いて、ステップ４１１で、監視中のジョブの所有者が自身（ステータスモニタプログラム）を起動したユーザ名と一致するか否かを判断する。そして、一致した場合は、ステップＳ４１２へ進んで印刷中止を可能とする印刷中止ボタンをコンピュータ１０１の表示部１１０に表示した後、ステップＳ４１３へ進む。
【００４４】
前記印刷中止ボタンは、例えば図３の表示画面内に３０１で示すように表示される。
【００４５】
メッセージループは、後述するステップＳ４１２で表示される印刷中止ボタンの（ユーザによる）押下に応答してＯＳが生成するボタン押下メッセージを（ＯＳから）受け取ると、ステップＳ４０８へ進んで印刷中のジョブを削除した後、ステップＳ４１３へ進む。また、ステータス情報取得ループからその他のメッセージを受け取ると、ステップＳ４０９へ進んでその他の処理を行った後、ステップＳ４１３へ進む。更に、ユーザ入力やその他のプログラム内部処理から終了メッセージを受け取ると、ステップＳ４１０へ進んで、プログラム終了フラグを立てた後、ステップＳ４１３へ進む。
【００４６】
前記ステップＳ４１１において、ジョブ所有者とステータスモニタの使用者とが一致しない場合は、印刷中止ボタンをコンピュータ１０１の表示部１１０に表示することなくステップＳ４１３へ進む。また、前記ステップＳ４１１で、ジョブ所有者とステータスモニタの使用者とが一致する場合は、印刷中止ボタンを表示した後、ステップＳ４１３へ進む。
【００４７】
ステップＳ４１３では、メッセージループが終了メッセージを処理したか否かを判断する。そして、終了メッセージを処理していないと判断された場合は、前記ステップＳ４０６へ戻る。また、前記ステップＳ４１３において、メッセージループが終了メッセージを処理したと判断された場合は、本処理動作を終了する。
【００４８】
尚、前記ステップＳ４１１において、ジョブ所有者とステータスモニタの使用者とが一致しない場合に、印刷中止ボタンをコンピュータ１０１の表示部１１０に表示しないのは、ステータスモニタを利用して、他人が無断で印刷を中止してしまうのを防ぐためである。
【００４９】
上記のような処理を行うステータスモニタは、以下のような様々な方法で起動することができる。
【００５０】
例えば、予め、ステータスモニタ起動ボタンを用意しておき、そのボタンを押下することによって、ユーザから直接起動されるケースや、ユーザインタフェースモジュール等から印刷開始と同時に自動的に起動されるケース、或いは何らかのエラーが発生した際、システム構成要素から自動的に起動されるケース等がある。
【００５１】
このうち、Ｍｉｃｒｏｓｏｆｔ社のコンピュータ基本システムであるＷｉｎｄｏｗｓ（登録商標）ＯＳでは、一部のシステム構成要素がアプリケーションプログラムを実行する場合、該プログラムの実行元は、その時、そのセッションにログオンしているユーザではなく、“ｓｙｓｔｅｍ”といった特殊な名前となってしまう制限（仕様）を持つ場合がある。
【００５２】
このような制限を持つシステム構成要素からステータスモニタが起動された場合、監視中のジョブの所有者が自身の使用者（“ｓｙｓｔｅｍ”）と一致することはないため、印刷中止ボタンは常に表示されないことになってしまう。
【００５３】
しかし、ステータスモニタの主機能であるステータス監視は、ジョブ所有者とは無関係に行うことが可能であるため、ステータスモニタ自体を、そのまま存続させておくのが実用的な仕様となる。
【００５４】
また、その後、使用者判別が可能となる条件でプログラムが起動されても、従来の二重起動防止方法では、上記制限下で起動した先行プログラムが存続するため、上記制限、即ち、印刷中止ボタンが使用できない状態も存続することになる。
【００５５】
次に、プログラム終了フラグとフローチャートの開始条件について説明する。
【００５６】
ここで、プログラム終了フラグとは、ステータスモニタが終了すべきか否かを判断することを認識するための内部フラグで、ユーザの入力に応じて立てられるものである。
【００５７】
まず、本発明におけるステータスモニタには、以下の２つの動作パターンを取り得る。
【００５８】
その第１は、印刷開始時に自動的に起動され、印刷が終了するか、ユーザが印刷終了を要求した場合に終了するパターンである。
【００５９】
また、第２は、ドライバのユーザインタフェース上にあるステータスモニタ起動ボタンをユーザが押下することにより起動され、ユーザがプログラム終了を要求した場合に終了するパターンである。
【００６０】
そして、この終了処理は、具体的には以下のようになる。
【００６１】
まず、前記第１のパターンの印刷終了と共に終了する場合では、プリントキューにジョブが無くなったら、プログラム終了要求メッセージを出し、メッセージループにおいてプログラム終了フラグ（内部用独自フラグ）を立てる。メッセージループは、プログラム終了要求メッセージを処理すると自動的に処理を抜けるものとする。そして、情報取得ループは、毎回プログラム終了フラグ（内部用独自フラグ）を確認しており、このプログラム終了フラグが立っていた場合は、処理を抜ける。
【００６２】
但し、ジョブの有無を確認してプログラム終了要求メッセージを出すのは、情報取得ループの中でも、メッセージループのどちらで行ってもよい。
【００６３】
次に、第２のパターンでは、ユーザのプログラム終了要求で終了する場合、つまりユーザインタフェース要求が入力された場合には、それに応じてＯＳから自動的にプログラム終了要求メッセージが出され、メッセージループの終了要求メッセージ処理部において、プログラム終了フラグ（内部用独自フラグ）を立てることになる。
【００６４】
次に、このステータスモニタプログラムが、従来のプログラム起動制御の代わりに、本発明によるプログラム起動制御を行った場合の動作について、図５のフローチャートを用いて説明する。
【００６５】
図５において、まず、ステップＳ５０１で、起動ユーザを確認した後、次のステップＳ５０２で、先行起動済みプログラムを確認する。次に、ステップＳ５０３で、先行起動済みプログラム（起動済みのステータスモニタ）が有るか否かを判断する。そして、起動済みプログラムが無いと判断された場合は、ステップＳ５０７乃至ステップＳ５１９の処理に移る。ここで、ステップＳ５０３における処理の詳細について説明する。ステータスモニタは、自分と同じウィンドウキャプション（ウィンドウ名）を持つアプリケーションが存在するか否かをＯＳに問い合わせる。ステータスモニタは自分のウィンドウキャプションを、例えば「機種名　−　ポート名」というように、機種名とポート名の組としている。同じプロセス名でも、プリンタ名やポート名が違えばウィンドウ名が異なる事になり、排他性は無いと判断できる。つまり、本実施の形態のステータスモニタを複数起動させても、異なる機種のプリンタは共存できることになる。このようにウィンドウキャプションに基づいて、排他性の有るプロセスが既に起動しているか否かの判断を行うものの他、二重起動防止の一般的な手法としては、クラスと呼ばれる識別単位で判断するもの、予めシステムから排他制御用に用意されたオブジェクトを用いるもの等もあるが、いずれも同様に、ＯＳに問い合わせて上述のような排他制御の判断処理を行っている。
【００６６】
尚、図５におけるステップＳ５０７乃至ステップＳ５１５及びステップＳ５１７乃至ステップＳ５１９は、上述した図４におけるステップＳ４０２乃至ステップＳ４１２と同一であるから、その説明は省略し、異なる点のみについて説明する。
【００６７】
図５のステップＳ５１１において、ユーザ名問い合わせのメッセージであると判断された場合は、ステップＳ５１６へ進んで、ユーザ名を返答した後、本処理動作を終了する。
【００６８】
一方、前記ステップＳ５０３において、起動済みプログラムが有ると判断された場合は、ステップＳ５０４へ進んで、先行起動済みプログラムに対して実行元ユーザ名を問い合わせる。次に、ステップＳ５０５で、先行起動済みプログラムが“ｓｙｓｔｅｍ”によって起動されたものあり、且つ前記ステップＳ５０４において調べた自身の実行元ユーザが“ｓｙｓｔｅｍ”であるか否かを判断する。そして、先行起動済みプログラムが“ｓｙｓｔｅｍ”によって起動されたものであり、且つ前記ステップＳ５０４において調べた自身の実行元ユーザが“ｓｙｓｔｅｍ”ではないと判断され場合は、ステップＳ５０６へ進んで、先行起動プログラムに対して終了要求を行った後、前記ステップＳ５０７乃至ステップＳ５１９の処理に移る。つまりステップＳ５０２で起動が認識されたプロセスが、新たに起動された、或いは、起動しようとするプロセスと排他性があるか否かを、実行元ユーザ名に基づいて、前記ステップＳ５０３で判断している。そして、前記ステップＳ５０５で排他性がないと判断された場合には、既に起動しているプロセスに代えて、新たに起動されるプロセスの実行を継続するのである。例えば、排他性があるか否かは、それぞれのプロセスが、同等の機能を有するアプリケーション（ここでは、プリンタのステータスモニタプログラム）に起因するものであることに基づき判断することもできる。
【００６９】
一方、前記ステップＳ５０５における判断結果が否定（ＮＯ）の場合は、本処理動作を終了する。
【００７０】
以上のように、本実施の形態に係るプロセス管理装置によれば、先行して起動したプログラムが何らかの制限の下で動作していても、後から同一プログラムが起動し、且つその後発プログラムが先行起動済みプログラムの抱える制限にとらわれていなければ、後から起動したプログラムが先行起動済みプログラムに代わって動作を行うため、ユーザが求めるタイミングで、より正常な動作を提供する可能性を広げることができる。
【００７１】
また、本実施の形態に係るプロセス管理装置による制御を用いることで、既に実行中のプログラムを新しいバージョンにアップグレードさせる場合等に、予め実行中のプログラムをユーザが手動で終了させておく必要がなくなる。また、プログラム起動中に後発プログラムによる置き換えが可能という条件を加味することで、先行起動済みプログラムに何らかの制限がある場合でも、それをむやみに終了させず、一時的に、その制限下で動作させておく制御が、より実用的になる。即ち、むやみに起動を中止することによって与えるユーザへの不快感を軽減する効果も期待される。
【００７２】
（第二実施の形態）
次に、本発明の第二実施の形態を説明する。
【００７３】
特開２００１−１４２６００号等のように、ユーザが選択した、或いはコンピュータシステムから取得した表示言語情報の種別を判断し、該表示言語情報から利用すべき表示言語に対応したマッピング情報を選択し、該選択されたマッピング情報に対応する表示言語をロードしてユーザに表示するユーザインタフェースを持つソフトウェアにおいて、前記選択されたマッピング情報が自身のサポート外の言語を示すものであった場合や、何らかのトラブルにより選択されたマッピング情報に対応する言語をロードできない場合には、前記ソフトウェアが保持している（サポートしている）他の言語で代用する場合がある。
【００７４】
このようなマルチ言語対応ソフトウェアが本発明の手法を実装していた場合、上記のような本来表示すべきものとは違う言語を表示しているケースにおいて、以後、選択されたマッピング情報が示す言語をサポート可能な新規モジュールがコンピュータにインストールされた、或いは選択されたマッピング情報に対応する言語をロードできない原因となっていた何らかのトラブルが解消された後、本ソフトウェアプログラムの起動が行われれば、既に先行起動済みプログラムが実行中であったとしても、その時点から正しい表示言語を表示することが可能となる。
【００７５】
また、本発明の目的は、上記実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成されることは言うまでもない。
【００７６】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００７７】
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００７８】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００７９】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施の形態の機能が実現される場合も含まれることは言うまでもない。
【００８０】
【発明の効果】
以上述べたように、本発明によれば、プログラムの二重起動防止処理を効率的に行うことができる。
【図面の簡単な説明】
【図１】本発明の第一実施の形態に係るプロセス管理装置を有する印刷システムの構成を示すブロック図である。
【図２】本発明の第一実施の形態に係るプロセス管理装置の基本処理動作の流れを示すフローチャートである。
【図３】本発明の第一実施の形態に係るプロセス管理装置におけるコンピュータの表示部の表示例を示す図である。
【図４】本発明の第一実施の形態に係るプロセス管理装置における一般的ステータスモニタプログラムの処理動作の流れを示すフローチャートである。
【図５】本発明の第一実施の形態に係るプロセス管理装置におけるステータスモニタプログラムの処理動作の流れを示すフローチャートである。
【符号の説明】
１０１　　コンピュータ
１０２　　プリンタ（印刷装置）
１０３　　外部インタフェース
１０４　　入力インタフェース
１０５　　ＣＰＵ（中央演算処理装置）
１０６　　ＲＯＭ（リードオンリーメモリ）
１０７　　ＲＡＭ（ランダムアクセスメモリ）
１０７ａ　図柄情報記憶部
１０７ｂ　印刷データ記憶部
１０７ｃ　プログラムロード領域
１０８　　外部記憶装置
１０９　　出力インタフェース
１１０　　表示部
１１１　　キーボード
１１２　　マウス
１１３　　入出力インタフェース
３０１　　印刷中止ボタン
【図１】
2004102622.tif 000003
【図２】
2004102622.tif 000004
【図３】
2004102622.tif 000005
【図４】
2004102622.tif 000006
【図５】
2004102622.tif 000007