基本的にLinuxコマンドをJavaを介して送信し、出力を出力するプログラムを作成しています。出力が1行のみの場合は正常に機能しますが、複数行の出力の場合、何が間違っているのかわかりません。たとえば、メモリ使用量を確認するには、「free」コマンドを使用しますが、1 行目と 3 行目しか返されません。コードは次のとおりです。
if (clinetChoice.equals("3"))
{
String command = "free";
Process process = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
System.out.println("You Chose Option Three");
String line;
while ((line = reader.readLine()) != null)
{
output += line;
System.out.println(line);
line = reader.readLine();
}
}
これを実行すると、次のものが返されます。
total used free share buffers cached
-/+ buffers/cache: 6546546 65464645
クライアントコード:
while ((fromServer = input.readLine()) != null)
{
System.out.println("Server: " + fromServer);
if (fromServer.equals("Bye"))
break;
System.out.print("Enter your choice: ");
fromClient = stdIn.readLine().trim();
if(fromClient.equals("1"))
{
System.out.println("Client: " + fromClient);
output.println(fromClient);
}
if(fromClient.equals("2"))
{
System.out.println("Client: " + fromClient);
output.println(fromClient);
}
if(fromClient.equals("3"))
{
System.out.println("Client: " + fromClient);
output.println(fromClient);
}
if(fromClient.equals("4"))
{
System.out.println("Client: " + fromClient);
output.println(fromClient);
break;
}
}