[前の記事]« 指定したファイルをディレクトリー構造を含めて「移動」する方法
[次の記事]指定した秒数sleepさせる方法は? »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「TASKKILL,START…サービス/タスクの起動/終了」索引へ

プログラムを画面から完全に消してバックグラウンドで動かしたい


821) プロセスの常駐と終了方法 RO 2002/10/21(月) 18:17


こんにちわ。
Windows2000のコマンドプロンプトで、プロセス名から特定の
プロセスIDを取得して、そのプロセスを終了させることは可能
なのでしょうか?

また、あるプロセスを起動する際に常駐プロセスとして起動する
方法はありますか?
コマンドプロンプトを閉じてもプロセスを終了させない方法を
探しています。

これらを起動用バッチファイル、終了用バッチファイルとして
作成したいと考えています。

よろしくお願い致します。

836) Re:プロセスの常駐と終了方法 SYSOP 2002/10/25(金) 13:36


ROさん こんにちは。

>こんにちわ。
>Windows2000のコマンドプロンプトで、プロセス名から特定の
>プロセスIDを取得して、そのプロセスを終了させることは可能
>なのでしょうか?

 下記のコメント・ツリーが参考になると思います。

・Unixのkill(プロセスの終了)と同等の機能は?

>また、あるプロセスを起動する際に常駐プロセスとして起動する
>方法はありますか?
>コマンドプロンプトを閉じてもプロセスを終了させない方法を
>探しています。

 32ビットのアプリケーション(たとえばExcel)ならば、コマンド・プロンプトから起動した場合に、そのコマンド・プロンプトが終了してもそれとは関係なく動作しますが、16ビットのDOSアプリだとそうはいかないと思います。
 ただ、(具体的な質問の趣旨がいまひとつ具体的でないので、イメージされている目的にあうかどうかはわかりませんが)、startコマンドを利用するこ とによって、「もとのプロセスが終了しても、別プロセスで実行されているDOSプログラムがそれに影響されず動作しつづける」ようにすることは可能です。

YanaKen


841) Re2:プロセスの常駐と終了方法 RO 2002/10/28(月) 20:52


ROです。こんにちは。

レスありがとうございます。

>>こんにちわ。
>>Windows2000のコマンドプロンプトで、プロセス名から特定の
>>プロセスIDを取得して、そのプロセスを終了させることは可能
>>なのでしょうか?

> 下記のコメント・ツリーが参考になると思います。

・Unixのkill(プロセスの終了)と同等の機能は?

やはり標準では無理のようですね。
上記ツリーの方法で試して見たいと思います。

>>また、あるプロセスを起動する際に常駐プロセスとして起動する
>>方法はありますか?
>>コマンドプロンプトを閉じてもプロセスを終了させない方法を
>>探しています。

> 32ビットのアプリケーション(たとえばExcel)ならば、コマンド・プロンプトから起動した場合に、そのコマンド・プロンプトが終了してもそれとは関係なく動作しますが、16ビットのDOSアプリだとそうはいかないと思います。
> ただ、(具体的な質問の趣旨がいまひとつ具体的でないので、イメージされている目的にあうかどうかはわかりませんが)、startコマンドを利用することによって、「もとのプロセスが終了しても、別プロセスで実行されているDOSプログラムがそれに影響されず動作しつづける」ようにすることは可能で す。

バッチファイルでstartコマンドを使用して起動しても、起動した
コマンドプロンプトを閉じてしまうとプロセスは終了してしまうと
認識しています。
やりたいことを具体的に言いますと、Javaの話になってしまうのですが
rmiの二つのプロセスrmiregistryとrmidをバッチで起動し、その
バッチを起動したコマンドプロンプトを終了させても、そのプロセスを
起動させたままにしておきたいのです。
また、これらの起動確認や、停止を行いたいためにプロセスIDの
取得方法や、終了させる方法も質問しました。

もし、画面を終了させても、プロセスが終了しない方法をご存知でしたらご教授願いたいと思います。

よろしくお願い致します。

860) Re3:プロセスの常駐と終了方法 SYSOP 2002/11/05(火) 10:08


ROさん こんにちは。

>バッチファイルでstartコマンドを使用して起動しても、起動した
>コマンドプロンプトを閉じてしまうとプロセスは終了してしまうと
>認識しています。

 んーと、どのコマンドプロンプトを閉じると、どのプロセスが終了してしまうというお話でしょうか。
「バッチファイルを起動した親のウィンドウが閉じると、startで起動した他のウィンドウも閉じてしまう」
 ということであれば、それはぼくの認識とは違いますが。

YanaKen


869) Re4:プロセスの常駐と終了方法 RO 2002/11/08(金) 10:18


YanaKenさん。こんにちは。

> んーと、どのコマンドプロンプトを閉じると、どのプロセスが終了してしまうというお話でしょうか。
>「バッチファイルを起動した親のウィンドウが閉じると、startで起動した他のウィンドウも閉じてしまう」
> ということであれば、それはぼくの認識とは違いますが。

実際に動作確認をした手順は、コマンドプロンプトを起動し、自作したバッチファイルのある場所に移動、この場所でバッチファイルを起動します。
このバッチファイルの中では
start /b 実行ファイル名(rmiregistry.exe等)
を行っています。
ここで起動したrmiregistry.exeのプロセスをタスクマネージャで確認していると、バッチファイルを起動したコマンドプロンプトの画面を閉じるボタンを押して消してしまうとrmiregistry.exeのプロセスも終了してしまいます。
これはrmiregistry.exeの親プロセスがバッチファイルを起動したcmd.exeであるため、親プロセスを終了させると同時に子プロセスであるrmiregistry.exeも終了してしまうためだと思っています。
startコマンドに/bをつけないで実行する場合は元のコマンドプロンプトを閉じてもプロセスは終了しませんが、startコマンドで起動した画面が残ってしまい、この画面を消すと当然rmiregistry.exeプロセスは終了してしまいます。
YanaKenさんの認識ではこのような動作をさせてもstartコマンドで起動したプロセスは残っているという認識なのでしょうか?

以前にも書いたと思いますが、このような使用方法でもプロセスが終了しない方法を探しています。
よろしくお願い致します。


870) Re5:プロセスの常駐と終了方法 YanaKen 2002/11/08(金) 13:07

http://homepage3.nifty.com/yanaken/

ROさん こんにちは。

>YanaKenさんの認識ではこのような動作をさせてもstartコマンドで起動したプロセスは残っているという認識なのでしょうか?

 少し話を戻しますが、

>>バッチファイルでstartコマンドを使用して起動しても、起動した
>>コマンドプロンプトを閉じてしまうとプロセスは終了してしまうと
>>認識しています。

 という前のROさんのご発言は、第三者が一般論として読めば、

・たとえばコマンド・プロンプト画面Aから"start chkdsk c:"などのコマンドを実行した場合に、画面Aを閉じたらchkdsk(のウィンドウ)も終了してしまうのが普通である。

 というお話に読めてしまいますし、それは事実とかなり異なる、というのが前回のぼくの発言の趣旨です。
 "start chkdsk c:"のようなコマンドを実行した場合に実際に起きるのは、

 ・(/Bスイッチをつけた場合は別として、通常は)別のコンソールウィンドウが表示され、指定したプログラムはその中で動く。
 ・STARTコマンドを実行した側のコンソールウィンドウを閉じても、この場合のCHKDSKの動作には影響がない。

 ……という動作です。

 で、お使いのプログラムについて話を戻すと、

>startコマンドに/bをつけないで実行する場合は元のコマンドプロンプトを閉じてもプロセスは終了しませんが、startコマンドで起動した画面が残ってしまい、この画面を消すと当然rmiregistry.exeプロセスは終了してしまいます。

 その画面(コンソールウィンドウ)は"rmiregistry.exe起動時の残骸"とかではなく、「そのプロセスの実体そのもの(が動作しているコンソールウィンドウ)」だと推測できます。

 そういう構造のプログラムであれば、その画面を閉じることは結局「CHKDSK実行中にCHKDSKの窓自体を閉じる」のと同じことですから、そのプロ グラム自体の仕様が変わらない限り、たとえば(バッチファイルからの起動ならば) START /MIN などを使って「最小化」状態で起動する、などの工夫の余地しかないんじゃないかなと思います。

YanaKen

871) Re6:プロセスの常駐と終了方法 RO 2002/11/08(金) 13:31


YanaKenさん。こんにちは。

大変失礼致しました。説明不足だったことを深くお詫びいたします。
最初からもう少し細かく内容を記述しておけばよかったと思います。

> その画面(コンソールウィンドウ)は"rmiregistry.exe起動時の残骸"とかではなく、「そのプロセスの実体そのもの(が動作しているコンソールウィンドウ)」だと推測できます。

私もこの認識でいます。

> そういう構造のプログラムであれば、その画面を閉じることは結局「CHKDSK実行中にCHKDSKの窓自体を閉じる」のと同じことですから、そのプ ログラム自体の仕様が変わらない限り、たとえば(バッチファイルからの起動ならば) START /MIN などを使って「最小化」状態で起動する、などの工夫の余地しかないんじゃないかなと思います。

やはりstartコマンドでは何らかのウインドウが起動していないとプロセスを常駐させることは不可能のようですね。

別の質問にも出ていましたが、UNIXでは&をつけるとその画面を閉じても親プロセスは1というプロセスに変わってバックグランドで動きつづけます。これをWindowsで行う方法を探していました。
コマンドプロンプトではこのようなことが出来ないようですので、別の方法で対処することを考えます。
今のところはサービスとして登録してしまい、起動、停止を行うような
バッチを作成して対処できればと思っています。

YanaKenさん、いろいろとありがとうございました。
 
 


カテゴリー「TASKKILL,START…サービス/タスクの起動/終了」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2002年10月21日 05:16に投稿されたエントリーのページです。

ひとつ前の投稿は「指定したファイルをディレクトリー構造を含めて「移動」する方法」です。

次の投稿は「指定した秒数sleepさせる方法は?」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート