背景にしても、最後の文の後に(バックグラウンドで)実行し続けJavaプログラムは、メイン
私は、STDの入力からデータを読み込み、単純なJavaプログラムを持っています。私はbashスクリプトexecuter.sh
python2 readLines.py | tee logfile | java MsgReader
readLines.py
は、行毎にファイルからデータを読み込み、標準出力にそれを投げるから、しかし、それを実行しています
MsgReader.java
import kafka.javaapi.producer.Producer;
public void process() {
String msg = "";
BufferedReader stdinReader = new BufferedReader(new InputStreamReader(System.in)
Producer producer = new Producer();//it takes config file as parameter which is not related to the question here
try {
while ((msg = stdinReader.readLine()) != null) {
producer.send(message);
}
stdinReader.close();
} catch (IOException|FailedToSendMessageException e) {
System.out.println("Send message failed!");
e.printStackTrace();
}
}
public static void main(String args[]) throws JSONException,IOException {
try{
Date now = new Date();
System.out.println("Start : " + now);
process();// Continuously reads logs
now = new Date();
System.out.println("After : " + now);
} catch(Exception e){
e.printStackTrace();
return;
}
}
実行
./executer.sh &
:すべての行readLines.py
端を読んだ後、バックグラウンド
通報
で実行されるが、ps
コマンドによって確認としてexecuter.sh
とMsgReader.java
はstll実行されます。ステートメントSystem.out.println("After : " + now);
がログファイルに記録され、プログラムがmain関数の最後のステートメントに達したことを示します。
Javaプログラムとbashスクリプトを正常に終了する方法。
ここにSystem.exit()
を追加しません。
プラットフォーム
CentOSの(最終)6.7をリリース
のJava 1.7.0_95
のpython 2.7.6
'process'とは何ですか?かなり関連性があります。特に、おそらく非同期のタスク実行プログラムのように思えるからです。 [mcve]をチェックアウトすることを検討してください。 – CollinD
pとは何ですか?コードを表示してください – Bohemian
フォアグラウンドで実行するとどうなりますか? –