,java,runtime.exec,Java,Runtime.exec" /> ,java,runtime.exec,Java,Runtime.exec" />

Java 使用get.Runtime.exec()运行Bin文件? 这是hello .exe:的C++代码 #include<iostream.h> #include<conio.h> int main() { cout<<"Hello world\n"; getch(); cout<<"I bypass error\n"; return 0; } 这样,我们有一些暂停命令来暂停进程的执行< /p>

Java 使用get.Runtime.exec()运行Bin文件? 这是hello .exe:的C++代码 #include<iostream.h> #include<conio.h> int main() { cout<<"Hello world\n"; getch(); cout<<"I bypass error\n"; return 0; } 这样,我们有一些暂停命令来暂停进程的执行< /p>,java,runtime.exec,Java,Runtime.exec,C++, GETCHE();不起作用。使用 int a; cin>>a; 相反 writer.write(c); writer.flush(); 上面的语句写入子进程的stdin,但是getch()似乎没有从stdin读取,因为它没有获取输入。你应该使用cin>>c或c=getc(stdin)getch()甚至似乎对onstdout有一些奇怪的影响,因为替换它会使flushingcout过时 以下是一些工作代码: // C++ #include<iostream>

C++,<代码> GETCHE();<代码>不起作用。使用

int a;
cin>>a;
相反

writer.write(c);
writer.flush();
上面的语句写入子进程的
stdin
,但是
getch()
似乎没有从
stdin
读取,因为它没有获取输入。你应该使用
cin>>c
c=getc(stdin)
getch()
甚至似乎对on
stdout
有一些奇怪的影响,因为替换它会使flushing
cout
过时

以下是一些工作代码:

// C++

#include<iostream>

using namespace std;

int  main()
{
    cout<<"Hello world\n";
    char c;
    cin >> c;
    cout<<"input received "  << c << endl;
    cout<<"I bypass error\n";
    return 0;
}
这仅仅意味着当前线程(在您的例子中是主线程)必须等待子进程完成并捕获它返回的值(请参阅中的javadoc)。此值为
return 0返回的值
输出

lets start<<<<<<
Hello world

(1) stdout of subprocess consumed.a
input received a

(2) stdout of subprocess consumed.Exited with error code 0

让您开始调用
cout.flush()以获取子进程的输出。使用cout.flush后,我访问了hello world。但是现在的问题是在C++ GETCHER(…)java程序无法将writer.write()或writer.print()发送到。。。。
// C++

#include<iostream>

using namespace std;

int  main()
{
    cout<<"Hello world\n";
    char c;
    cin >> c;
    cout<<"input received "  << c << endl;
    cout<<"I bypass error\n";
    return 0;
}
// Java

BufferedReader reader = new BufferedReader(new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));

System.out.println("lets start<<<<<<");
do {
 c = (char) reader.read();
   System.out.print(c);
} while (c != '\n' && c != -1 && c != Character.MAX_VALUE);
System.out.print('\n');
System.out.print("(1) stdout of subprocess consumed.");

c = (char) System.in.read();
writer.write(c);
writer.flush();


do {
 c = (char) reader.read();
   System.out.print(c);
} while (c != '\n' && c != -1 && c != Character.MAX_VALUE);
System.out.print('\n');
System.out.print("(2) stdout of subprocess consumed.");

exitVal = process.waitFor();
System.out.println("Exited with error code " + exitVal);
exitVal=process.waitFor();
lets start<<<<<<
Hello world

(1) stdout of subprocess consumed.a
input received a

(2) stdout of subprocess consumed.Exited with error code 0