2

これはイライラする問題です。次の Java コードを実行しています。

       try {
            String query = someQuery, input = someInput;
            ProcessBuilder pb = new ProcessBuilder("cmd", "/c", query); // Windows
            Process p = pb.start();

            BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

            BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

            try
            {
                // Input to the query
                OutputStream os = p.getOutputStream();
                os.write(input.getBytes());
                os.flush();
                os.close();
            } catch (IOException e)
            {
            }

            System.out.println("STDIN : \n");

            while ((s = stdInput.readLine()) != null)
            {
                System.out.println(s);
            }

            System.exit(0);
        } catch (IOException e)
        {
            e.printStackTrace();
        }

queryパイプコマンドです。内部の各サブコマンドqueryは、UNIX ライクな API 呼び出しです (独自の : Sirsi Unicorn API は、興味がある場合)。また、データベース呼び出しです。Windows コマンド プロンプトは、これらの API 呼び出しに対応できます。

問題:

2 つのデータベース コマンドをパイプしようとすると、プログラムは正常に実行されますが、3 つのデータベース コマンドをパイプすると、プログラムがハングします。これらの同じコマンドを cygwin で実行すると、プログラムは正常に動作します。興味深いことに、3 パイプ コマンドを 2 つの別個のコマンドに分割すると、プログラムは正常に実行されます。

質問:

私の質問は、Windows コマンド ラインにパイプ バッファの問題がありますか? Windows でのパイピングが機能しない場合はありますか? パイピングがタイムアウトすることはありますか?

この時点で、どんな情報でも大歓迎です。

4

0 に答える 0