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>
C++,<代码> GETCHE();<代码>不起作用。使用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>
int a;
cin>>a;
相反
writer.write(c);
writer.flush();
上面的语句写入子进程的stdin
,但是getch()
似乎没有从stdin
读取,因为它没有获取输入。你应该使用cin>>c代码>或c=getc(stdin)
getch()
甚至似乎对onstdout
有一些奇怪的影响,因为替换它会使flushingcout
过时
以下是一些工作代码:
// 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