3

テキストファイルからデータを読み取り、そのデータに基づいてグラフを作成する、C を使用して簡単なプログラムを作成しようとしています。UNIX を実行しています。

私のコードの半分は、ユーザー入力とメッセージの表示のために printf と scanf に端末を使用することを意図しており、その半分が完了したら、残りの半分を開始する必要があります。

後半は、別の描画プログラムである drawapp.jar を使用してグラフを作成することを目的としています。

gcc -o filename filename.c を使用してコンパイルし、 ./filename を使用して実行すると、楽しくコンパイルされますが、前半のみが実行されます

gcc -o filename filename.c graphics.c を使用してコンパイルし、./filename | を使用して実行すると Java -jar drawapp.jar 、コンパイルは正常に実行されますが、実行すると drawapp.jar が開き、空白の灰色の画面でフリーズし、ターミナル ウィンドウにコードの前半が表示されず、ユーザー入力を要求するだけです。フリーズし、端末で入力できますが、何もしません

このリンクの画像は私の問題を示しています: http://picpaste.com/Untitled-IlRWjqLN​​.png

ターミナルで前半を実行してからdrawapp.jarに切り替えるように、cコードを正しく取得するにはどうすればよいですか?

ありがとう

4

2 に答える 2

1

fork()execlp()_"java -jar drawapp.jar"

于 2012-11-10T10:02:36.110 に答える
0

私が理解している限り、あなたのプログラムのstdoutはjavaプロセスにパイプされています。ここで、最初にターミナルウィンドウを使用してユーザーと通信し、次にstdoutを介してjava.processにコマンドを送信します。したがって、/ dev/ttyを開いて出力することができます

FILE *f=fopen ("/dev/tty", "w");
fprintf (f, "Hi there\n");

このようにターミナルに話しかけます。最後に\nがない出力がある場合は、fflushを使用する必要があります。

fprintf (f, "enter name: ");
fflush (f);
于 2012-11-10T10:01:11.857 に答える