这个c程序以1秒的间隔打印1到10个数字。这个相同的执行c程序文件(filename.out或filename.exe或./filename)在java运行时运行,但它在10秒后打印1到10个数字interval.I在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
答案 0 :(得分:2)
尝试使用fflush()
明确刷新stdout
。
int main()
{
int i;
for(i=1; i<=10; i++)
{
printf("%d\n", i);
sleep(1);
fflush(stdout);
}
} //main
默认情况下, printf()是行缓冲的。因此printf()中的换行符应立即刷新输出。但是这里stdout
没有附加到终端而是附加到java进程。
答案 1 :(得分:0)
看起来在程序终止之前不会读取C程序的所有输出。也许它是缓冲的。尝试在不使用r
的情况下阅读BufferedReader
。