我有两个简单的程序-一个用Java编写的
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
Process p = Runtime.getRuntime().exec("./cpp");
int data = 1;
DataOutputStream dos = new DataOutputStream(p.getOutputStream());
InputStream is = p.getInputStream();
dos.writeInt(data);
for (byte c : is.readAllBytes()) {
System.out.print((char) c);
}
}
}
和另一个c ++
#include <iostream>
using namespace std;
int main(int argc,char **argv)
{
int n;
cin >> n;
cout << n + 1 << "\n";
return 0;
}
Java程序运行C ++程序并向其中传递一些值。 C ++程序计算一些值并将其返回给Java程序。问题是C ++程序似乎不读取输出流中给定的数据。当我运行Java程序时,它只是在读取响应的行中停止。但是,当我从C ++中删除cin时,它工作正常。
我也尝试通过这种方式传递值:
Process p = Runtime.getRuntime().exec("./cpp v1 v2 v3 v4");
但是有时候我需要传递非常大的数据,然后我得到
java.io.IOException: error=7,Argument list too long