无法 运行 并通过 Java 为 C 代码提供输入
Unable to run and give input to C code through Java
我想通过 Java 运行 一个 C 代码来打印用户输入的整数。我正在使用 ProcessBuilder class。
Java 代码为我通过 outputstream
输入的每个整数提供相同的输出 (stdout:0)。
public class test {
public static void main(String args[]) throws IOException {
String line;
ProcessBuilder builder = new ProcessBuilder("first1.exe");
Process process = builder.start();
OutputStream stdin = process.getOutputStream();
InputStream stdout = process.getInputStream();
InputStream err=process.getErrorStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
writer.write(8);
writer.flush();
line = reader.readLine();
System.out.println("Stdout: " + line);
}
}
我总是得到输出:
stdout:0
first1.exe 的 C 代码是:
#include <stdio.h>
int main ()
{
int n;
scanf("%d",&n);
printf("%d",n);
return 0;
}
在上面的代码中,当 C 代码 first1.exe
执行时,它会等待输入。
这里编写器只写 8 什么都不做,而代码 first1.exe
要求用户写 8 然后按进入。
上面的代码不起作用,因为没有输入或换行。
将 writer.write(8);
行替换为 writer.write(8+"\n");
并在 writer.write(8+"\n")
之前添加 process.waitFor()
,它将正常工作。
替换语句时,代码给出 stdout:8
作为输出。
使用
process.waitFor();
writer.write(8+"\n");
enter code here
我想通过 Java 运行 一个 C 代码来打印用户输入的整数。我正在使用 ProcessBuilder class。
Java 代码为我通过 outputstream
输入的每个整数提供相同的输出 (stdout:0)。
public class test {
public static void main(String args[]) throws IOException {
String line;
ProcessBuilder builder = new ProcessBuilder("first1.exe");
Process process = builder.start();
OutputStream stdin = process.getOutputStream();
InputStream stdout = process.getInputStream();
InputStream err=process.getErrorStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
writer.write(8);
writer.flush();
line = reader.readLine();
System.out.println("Stdout: " + line);
}
}
我总是得到输出:
stdout:0
first1.exe 的 C 代码是:
#include <stdio.h>
int main ()
{
int n;
scanf("%d",&n);
printf("%d",n);
return 0;
}
在上面的代码中,当 C 代码 first1.exe
执行时,它会等待输入。
这里编写器只写 8 什么都不做,而代码 first1.exe
要求用户写 8 然后按进入。
上面的代码不起作用,因为没有输入或换行。
将 writer.write(8);
行替换为 writer.write(8+"\n");
并在 writer.write(8+"\n")
之前添加 process.waitFor()
,它将正常工作。
替换语句时,代码给出 stdout:8
作为输出。
使用
process.waitFor();
writer.write(8+"\n");
enter code here