-1
私はWindows7のcygwinで次のコードを実行していますが、出力が得られません。誰かが助けてくれますか? そして私は "netstat -a | grep ESTABLISHED"をLinuxのボックスでランタイムexec()を呼び出して使用し、他のすべての状態を取得しましたが、ESTABLISHED状態のみが必要です。 (誰かがこれを助けることができる?)grepのnetstatがJavaで失敗しています
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TestNetStat {
public static void main(String[] args) {
try {
Process p = Runtime.getRuntime().exec("netstat -anl | grep 'LISTEN \\| ESTABLISHED \\| SYN_SENT \\| SYN_RECV \\| LAST_ACK \\| LAST_ACK \\| CLOSE_WAIT \\| TIME_WAIT \\| CLOSED \\| CLOSING \\| FIN_WAIT1 \\| FIN_WAIT2' | awk '/^tcp/ {t[$NF]++}END{for(state in t){print state, t[state]} }'");
BufferedReader in = new BufferedReader(
new InputStreamReader(p.getInputStream()));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
デバッガが、プログラムが期待通りに動作していないことを示す最初の点は何ですか?何が起こったのでしょうか?そして、代わりに何が起こったのでしょうか? –
'Process'のドキュメントを見ましたか? 'getInputStream'はstdinを返します。代わりに 'getOutputStream'を使ってみてください。ドキュメント:https://docs.oracle.com/javase/8/docs/api/java/lang/Process.html – lucasvw
Javaプログラムなしでコマンドを実行したときに、コマンドが何かを戻しているかどうかを最初に確認してください – muasif80