1

現在、GDB への独自のフロントエンドを作成しようとしています。一部を除いて、これまでのところすべて順調に進んでいます。プロセスが開いたら、入力をプロセスにパイプします。以下のコードの例を含めます。

    private JButton run = new JButton("Run");
    JToolBar vertical = new JToolBar(JToolBar.VERTICAL);
    vertical.add(run);
    add(vertical, BorderLayout.WEST);

    run.addActionListener(new ActionListner()
    {
        public void actionPerformed(ActionEvent arg0)
        {
            Process proc;
            proc = Runtime.getRuntime().exec("gdb");
            proc = Runtime.getRuntime().exec("r");
        }
    }

これにより、コマンド 'gdb' を実行し、そのすべての出力を TextArea にパイプすることができますが、その後、プロセスが閉じられ、同じプロセスに対して 'r' などのコマンドを実行できなくなり、代わりに別のプロセスが開かれます。 1 つはコマンド 'r' を単独で実行しようとします。これらを同じプロセスで実行する方法はありますか?また、これは GUI であるため、複数のボタンが同じプロセスと対話できるようにする必要があります。つまり、「実行」ボタンは「r」を実行できる必要があり、「ブレークポイント」ボタンは「r」を実行できる必要があります。同じプロセスに対して「b」を実行しますが、これは可能ですか?

TL;DR: GUI を使用して Java の同じプロセスから複数のシステム コマンドを実行する必要がありますが、それは可能ですか?

4

3 に答える 3

4
final PrintWriter out = new PrintWriter(proc.getOutputStream());
out.println("r");

これらは個別のプロセスではなく、に入力されgdbます。:-)

于 2012-09-03T19:29:10.187 に答える
0

GDBとの相互作用を抽象化する必要があります。特別なインターフェース「DebugWithGDB」を作成し、start / stop / breakpoint/etcのようなメソッドを宣言します

あなたの場合、GDBをイベント呼び出し(actionPerformed)と結合しようとしており、さらに、異なる2つのプロセスを生成します。

クラスに変数があり、この変数はそのインターフェイスの実装を保持します。したがって、すべてのボタンはその変数への参照を持ち、その変数でコマンドを呼び出すことができます。

GUIをフリーズさせないために、 http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingUtilities.htmlの使用も検討してください(メインキュースレッドにアクションが実行されます)

于 2012-09-03T19:29:48.367 に答える
0

プロセスのストリームを取得して操作する必要があります。これを読む必要があります:http ://www.javaworld.com/jw-12-2000/jw-1229-traps.html 。

1つのプロセスでのexecutindコマンドの例を次に示します。コンソールアプリケーションにコマンドを送信しますか?

于 2012-09-03T19:30:39.753 に答える