0

这个 c 程序以 1 秒的间隔打印 1 到 10 个数字。同样的执行 c 程序文件(filename.out 或 filename.exe 或 ./filename)在 java 运行时运行,但它在 10 秒的间隔后打印 1 到 10 个数字。我在 java 运行时执行中需要相同的输出格式,即它应该以 1 秒的间隔打印 1 到 10。

提前谢谢.......

#include<stdio.h>

#include<time.h>     

#include<sys/timeb.h>

int main()

{
int i;
    for(i=1; i<=10; i++)
    {
       printf("%d\n", i);
       sleep(1);
    }   
} //main

Java代码…………

  import java.io.*;

  import java.lang.Runtime;

  import java.lang.*;

  import java.io.File;

  public class run
  {
    public static void main(String[] args)
    {
      try
      {
    String[] cmd = {"filelpath"};
    Process p = java.lang.Runtime.getRuntime().exec(cmd);
    InputStream Out = p.getInputStream();
    InputStreamReader r = new InputStreamReader(Out);
    BufferedReader in = new BufferedReader(r);
    String line;
    while ((line = in.readLine()) != null)
    {System.out.println(line);}
    in.close();
    System.out.println("Done.");
     }
    catch (IOException ex) 
    {
     ex.printStackTrace();
     }

   } //void

 } //main
4

2 回答 2

2

尝试stdout使用fflush().

int main()

{
int i;
    for(i=1; i<=10; i++)
    {
       printf("%d\n", i);
       sleep(1);
       fflush(stdout);
    }   
} //main

printf() 默认是行缓冲的。所以 printf() 中的换行符应该立即刷新输出。但是这里stdout不是连接到终端,而是连接到 java 进程。

于 2013-05-11T19:50:56.190 回答
0

看起来在程序终止之前不会读取 C 程序的所有输出。也许它被缓冲了。尝试r从不使用BufferedReader.

于 2013-05-11T19:44:45.430 回答