java からの 外部コマンド呼び出しで実行中断も可能にすることを試行中
java の ProcessBuilder をつかって外部コマンドを呼び出すことは、これまでも度々、行ったことがある。
最近、呼び出し元から、外部コマンド実行をキャンセルできるようにすることを試みている。
(呼び出し側ではプログレスバーとキャンセルボタンを表示し、キャンセルボタンで実行を中断できる)
どうやるかというと、 Process#exitValue() は、まだプロセスが終了していないと exception を投げることを利用するのだ。
while (true) 中で、 sexitValue() , ユーザーキャンセルの有無のチェック, sleep() を回して、プロセス終了かキャンセル実行のどちらかでループを抜けさせるのだ。
参考にしたのは次のページ。
- http://www.limy.org/dest/limy-eclipse/javasrc/org/limy/eclipse/qalab/ProcessUtils.html
> > org.limy.eclipse.qalab.ProcessUtils
- http://www.javainthebox.net/laboratory/J2SE1.5/TinyTips/ProcessBuilder/ProcessBuilder.html
> > J2SE 5.0 Tiger 虎の穴 ProcessBuilder
公開できる形のサンプルができしだい、ここで公開する。(土曜か日曜には作業できると思う。私の実装ミスと思うが ループが抜けない状況が発生しており 困っている。)
もっと違うアイデアによる実装案、実装例を知っている方がいたら、教えていただけると嬉しい。
最近のコメント