• ベストアンサー

コンソールアプリケーションの終了方法

コンソールアプリケーションをC言語(Visual-C++6.0)にて開発予定です。このアプリケーションは画面を使わないのでコンソールアプリケーションにする予定です。このプログラムは常駐プロセスにし、コマンドで起動停止を行うようにする予定です。プログラムの起動はバッチファイルを作成し、そこから実行しようと考えていますが、プログラムを停止させるバッチファイルのイメージがわきません。unixの場合は、当該プロセスにSIGTERMを送信する等の方法が考えられるのですが、windowsで常駐のコンソールアプリケーションを停止させるには、どのような方法があるのでしょうか。ご存じの方ありましたら、教えてください。停止させる方法は、外部から常駐プロセスに停止である旨の何らかの事象を送り、それを常駐プロセスがキャッチし、自ら停止することを想定しています。(有無をいわさず殺すことは考えていません) 実行環境:windows2003を想定 開発言語:VC++6.0でC言語

質問者が選んだベストアンサー

  • ベストアンサー
  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.3

Windowsで画面を使わない常駐アプリケーションならコンソールアプリケーションじゃなくサービスにするのが普通じゃないですか。 サービスにすればWindowsの機能(GUIやsc.exeコマンド)により起動・停止の制御ができますし、停止コマンドを受けて常駐アプリケーション側で停止処理をすることができます。 プログラムとしてもサービスとしての制御要求に応えるエントリを幾つか用意するだけで特に難しいところはないと思います。

tatsu99
質問者

お礼

なるほど、サービスですか。何となく私が求めていた解のような気がしてきました。サービスについて調べてみます。

その他の回答 (2)

回答No.2

コンソールアプリではないが タスクバー(XP以降だと通知領域と言うのかな) 常駐型のアプリにしたらどう?

tatsu99
質問者

お礼

回答ありがとうございます。今のところ、その方法は考えておりません。windows上で動作するアプリケーションを作りますが、(イベントドリブンである)windowsアプリケーションは考えておりません。

回答No.1

単純な方法では、常駐プログラムが定期的にどこかのファイルなりレジストリなりを参照するようにして、別のプログラムでそこにフラグを立てる、と。で、常駐プログラム側がフラグを検出したら、終了処理に・・・じゃ駄目?

tatsu99
質問者

お礼

回答ありがとうございます。他に良い回答がなければそのような方法を採用するつもりでおります。他に、これが定番ですというようなものがあるかもしれませんので、もうちょっと待ってみます。

関連するQ&A