Mysql データベースをチェックする Java アプリケーションを呼び出す perl CGI があります。存在しないエントリを検索すると、Java アプリケーションはサーバーに例外ハンドラ メッセージを表示します (X ディスプレイ ウィンドウが必要です)。例外は簡単で理解できますが、クリックして閉じる必要があり、その時点で perl CGI を続行できます。もちろん、顧客は例外メッセージを表示できません (また表示すべきではありません)。
私の質問は..サーバーウィンドウに例外メッセージが表示されないようにするにはどうすればよいですか? perl からのメッセージを閉じる方法はありますか? 私は perl スクリプトを制御できますが、呼び出す Java アプリケーションは制御できません。
$ENV{'DISPLAY'} = 'myserver:0.0';
$testline = system("java -Dby.product=true -jar javaApp.jar $version status>mytest.txt") >> 8;
$version が存在しない場合、例外が発生します。perlで後でファイルを処理するために、結果をファイルにパイプします
ありがとう。ロッキー。
=====================
ありがとう。これを追加しました...
$ENV{'DISPLAY'} = 'server:0.0';
use IPC::Open2;
use POSIX ":sys_wait_h";
$pid = open2(\*CHLD_OUT, \*CHLD_IN, "java -Dby.product=true -jar javaApp.jar $version status>mytest.txt 2>/tmp/java_error.$$");
sleep(5);
kill('TERM', $pid);
データベースで既知の値を使用すると、以前と同様に正常に機能します。存在しない値を検索すると、Java メッセージが表示されます。スリープ行がないと、Java メッセージはポップアップしません。言い換えれば、pid が強制終了されたように見えますが、非常に迅速に結果が mytest.txt に入力されません。スリープ機能により、Java アプリが動作するまでしばらく時間がかかり、その後、kill によりポップアップ メッセージが削除されると思いました。しかし、これは起こりません。
サーバーの画面にメッセージが表示されないように、Java アプリケーションの変更を要求する必要があるようです。