2016-10-06 2 views
0

私は非常にCのバックグラウンドから来て、まったく新しいJavaです。私は何をしたい、私はProcessBuilderを見てきましたC.にfork()のようなものですが、すべての例は、次の例のように、外部プロセスを生成するように見える: 子プロセスを作成して関数またはクラスメソッドを実行させる

Process p = new ProcessBuilder("/bin/chmod", "777", path).start(); 
p.waitFor(); 

私は新しい子プロセスが実行を開始します新しい関数、またはクラスメソッド。私のようなものに振る舞うべき何をしたいのか

Process p = new ProcessBuilder(<CLASS_METHOD>).start(); 
p.waitFor(); 

親プロセスは子プロセスが与えられた<CLASS_METHOD>の実行を開始して、次の行(waitFor()を含む行)を実行します。

どうすればいいですか?

その他の質問:私はハンドラを得ることができる方法はありますかSIGCHLD?子プロセスの1つが消滅したときに、新しい子プロセスを作成したい。

+0

スレッドまたはJava並行性APIを調べます。 –

+0

@RobbyCornelissen私はスレッドを必要としません。私は別々のプロセスが必要です。 –

+0

可能性のある関連する質問:http://stackoverflow.com/questions/26319804/adapting-c-fork-code-to-a-java-program –

答えて

1

なぜプロセスビルダーを使用して新しいJavaプロセスを作成できないのですか?次のようなもの

Process p = new ProcessBuilder("/bin/java /tmp/Main.class").start(); 
p.waitFor(); 

クラスパスをハードコードしたくない場合は、次の手順でパスを取得できます。

String path = Main.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 
+0

私の質問は - 私は実行したくないコマンドを文字列で実行します。私は、コントロールが子プロセスの関数またはブロックのコードに移動するようにします。 –

+0

これはスレッドを使用する場所です。 –

+0

FTR:Upvoted。 viaコマンド以外の解決策はないようだ。ありがとう。 –

関連する問題