无法 运行 并通过 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