用C++ 写了一个控制台程序:写一个JAVA类,调用这段编译后的可执行文件,并进行输入输出,可以启动这个控制台程序,不过CPU 是100%,不能得到预期结果。java程序也不能正常结束!请高手帮忙!谢过!!
C++ 代码:
#include "iostream.h"int main(int argc, char* argv[])
{
char s1[100];
do{
cin>>s1;
if (s1[0] == 'q')
break;
cout<<"scan : "<<s1<<endl;
}while(1);
return 0;
}
--------------------------
java 代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;public class Rtm { public static void main(String args[]) {
try {
System.out.println("boot");
String command = "c:\\KAV.exe notepad";// c:\\KAV.exe
Process child = Runtime.getRuntime().exec(command);
InputStream is = child.getInputStream();
OutputStream os = child.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
BufferedReader br = new BufferedReader(new InputStreamReader(is));
bw.write("scan\r\n");
String inline = null;
while(null!=(inline=br.readLine()))
System.out.println(inline);
bw.write("q\r\n");
child.destroy();
System.out.println("end");
} catch (IOException e) {
e.printStackTrace();
}
}
}
C++ 代码:
#include "iostream.h"int main(int argc, char* argv[])
{
char s1[100];
do{
cin>>s1;
if (s1[0] == 'q')
break;
cout<<"scan : "<<s1<<endl;
}while(1);
return 0;
}
--------------------------
java 代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;public class Rtm { public static void main(String args[]) {
try {
System.out.println("boot");
String command = "c:\\KAV.exe notepad";// c:\\KAV.exe
Process child = Runtime.getRuntime().exec(command);
InputStream is = child.getInputStream();
OutputStream os = child.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
BufferedReader br = new BufferedReader(new InputStreamReader(is));
bw.write("scan\r\n");
String inline = null;
while(null!=(inline=br.readLine()))
System.out.println(inline);
bw.write("q\r\n");
child.destroy();
System.out.println("end");
} catch (IOException e) {
e.printStackTrace();
}
}
}
解决方案 »
- 为啥不是Sun的JDK就检测不到呢?
- 关于接口,抽象类
- jList刷新问题
- 如何在JTabbedPane中植入JFrame的一些特性,比如可以关闭tab,其实就是使两者融合
- 大家好:请给个JAVA 的类库(不是内裤)
- 问一个有关swing的问题,大虾们帮帮忙
- 请教几个关于"时间"的问题!!!!
- 关于Java语言规范(JLS)
- DateFormat有没有getDateInstance方法。如果有在那个来里面!谢谢了等带。。。
- 这段代码Last str是2,谁能告诉我为什么?
- 将数据库的值查询出来后怎么方到数组里啊 !!!!
- 请问java聊天室,发送带有自定义颜色的字体,怎么在其他客户端显示字颜色??
把child.getInputStream返回的对象,
传给一个线程来及时读取,
不然,
有可能会发生锁死。