Java プログラムで c-Application の出力ストリームを読みたかったのです。iremoted (ここで入手可能: http://osxbook.com/software/iremoted/download/iremoted.c ) は、Apple Remote のボタンが押された場合に「0x19 が押されました」のような別の行を出力する C アプリケーションです。iremoted プログラムを起動すると、すべてがうまくいき、ボタンを押すたびにこれらの別々の行が画面に表示されます。ここで、Java プロジェクトで Apple Remote の入力を処理するために、Java アプリケーションで C アプリケーションの出力ストリームを読み取りたいと考えました。残念ながら、入力が認識されない理由がわかりません。
簡単な HelloWorld.c プログラムで試してみたところ、この場合、プログラムは意図したとおりに応答しました (HelloWorld が出力されます)。
iremoted プログラムで動作しないのはなぜですか?
public class RemoteListener {
public void listen(String command) throws IOException {
String line;
Process process = null;
try {
process = Runtime.getRuntime().exec(command);
} catch (Exception e) {
System.err.println("Could not execute program. Shut down now.");
System.exit(-1);
}
Reader inStreamReader = new InputStreamReader(process.getInputStream());
BufferedReader in = new BufferedReader(inStreamReader);
System.out.println("Stream started");
while((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
System.out.println("Stream Closed");
}
public static void main(String args[]) {
RemoteListener r = new RemoteListener();
try {
r.listen("./iremoted"); /* not working... why?*/
// r.listen("./HelloWorld"); /* working fine */
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}