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

我如何让 c 代码正确,以便它在终端中执行前半部分然后切换到 drawapp.jar?

谢谢

4

2 回答 2

1

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

于 2012-11-10T10:02:36.110 回答
0

据我了解,您的程序的标准输出通过管道传输到 java 进程。现在您首先要使用终端窗口与用户通信,然后通过标准输出向 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 回答