概述使用Java调用Linuxterminal:如何刷新输出?
1)我使用Java调用linuxterminal运行foo.exe并将输出保存在一个文件中:
String[] cmd = {\”/bin/sh\”,\”-c\”,\”foo >haha.file\”}; Runtime.getRuntime().exec(cmd);
2)问题是当我打算在代码中稍后阅读haha.file时,它还没有被写入:
file f=new file(\”haha.file\”); // return true in = new BufferedReader(new fileReader(\”haha.file\”)); reader=in.readline(); System.out.println(reader);//return null
3)只有在程序完成后,才会写入haha.file。 我只知道如何冲洗“作家”,但不知道如何冲洗。 喜欢这个。 我怎样才能强制Java在terminal写入文件?
在此先感谢EE
有没有办法检查最近处理器caching是否被刷新?
在linux上closures()套接字的正确方法,linux和windows之间的区别?
刷新cpucaching而不调用caching?
有没有办法build立一个linuxpipe道非缓冲或线路缓冲?
如何在原始套接字中丢弃传入数据包?
即使在Nginx中也可以使用PHP Flush
愚弄一个windows程序,相信它正在运行输出未redirect
如何在win32上刷新stdlib输出文件?
如何从C程序在linux中刷新cpucaching?
如何刷新pipe道清理C中的缓冲区。 当两个pipe道是同一进程的一部分时
此问题是由Runtime.exec的异步性质造成的。 foo正在执行一个独立的过程。 您需要调用Process.waitFor()以确保文件已经写入。
String[] cmd = {\”/bin/sh\”,\”foo >haha.file\”}; Process process = Runtime.getRuntime().exec(cmd); // …. if (process.waitFor() == 0) { file f=new file(\”haha.file\”); in = new BufferedReader(new fileReader(\”haha.file\”)); reader=in.readline(); System.out.println(reader); } else { //process dID not terminate normally }
您可以等待完成该过程:
Process p = Runtime.getRuntime().exec(cmd); int result = p.waitFor();
或者使用p.getinputStream()直接从进程的标准输出读取。
总结
以上是内存溢出为你收集整理的使用Java调用Linuxterminal:如何刷新输出?全部内容,希望文章能够帮你解决使用Java调用Linuxterminal:如何刷新输出?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容