Java代码:import java.io.*;
import java.util.*;public class CmdProcessBuilder {
public static void main(String args[])
throws InterruptedException,IOException
{
ProcessBuilder builder = new ProcessBuilder(new String[]{"C:\\Test.exe"});
final Process process = builder.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr); PrintWriter to = new PrintWriter(process.getOutputStream());
to.print("your name");
to.flush(); String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
Thread.sleep(20);
} }
}C++代码1:
#include <stdio.h>int main(void)
{
char cmd[1024]; fscanf(stdin,"%s",cmd); for(;;){
cin >> cmd;
fprintf(stdout,"hello:%s\n",cmd);
} return EXIT_SUCCESS;
}C++代码2:
#include <stdio.h>int main(void)
{
for(;;){
fprintf(stdout,"hello:%s\n",cmd);
} return EXIT_SUCCESS;
}我要做一个Java和C++程序做命令行交互的程序,请问“C++代码1”为什么会阻塞java的br.readLine(),“C++代码2”却运行正常。
import java.util.*;public class CmdProcessBuilder {
public static void main(String args[])
throws InterruptedException,IOException
{
ProcessBuilder builder = new ProcessBuilder(new String[]{"C:\\Test.exe"});
final Process process = builder.start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr); PrintWriter to = new PrintWriter(process.getOutputStream());
to.print("your name");
to.flush(); String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
Thread.sleep(20);
} }
}C++代码1:
#include <stdio.h>int main(void)
{
char cmd[1024]; fscanf(stdin,"%s",cmd); for(;;){
cin >> cmd;
fprintf(stdout,"hello:%s\n",cmd);
} return EXIT_SUCCESS;
}C++代码2:
#include <stdio.h>int main(void)
{
for(;;){
fprintf(stdout,"hello:%s\n",cmd);
} return EXIT_SUCCESS;
}我要做一个Java和C++程序做命令行交互的程序,请问“C++代码1”为什么会阻塞java的br.readLine(),“C++代码2”却运行正常。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货