Я пытаюсь вызвать программу C через Java с помощью построителя процессов. Через Java я собираюсь скомпилировать программу C (что она делает), а затем запускает ее, а это не так.java process builder c c не отображает результаты?
Я ожидаю, что терминал, чтобы показать результат: 6, но бездельники показывая
программа Java (main.java)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class main
{
public static void main(String[] args) throws InterruptedException, IOException
{
//compile + run
Process compile = new ProcessBuilder("gcc", "calculator.c").start();
//delay program to allow ./a.out to create
try
{
Thread.sleep(1000); //1000 milliseconds is one second.
}
catch(InterruptedException ex)
{
Thread.currentThread().interrupt();
}
Process execute = new ProcessBuilder("./a.out").start();
}
}
C Программа: (calculator.c)
#include <stdio.h>
int main()
{
int a = 4;
int b = 2;
int c = a + b;
printf("Result: %d \n", c);
}
You нужно прочитать «Input/ErrorStream» процесса, чтобы увидеть, что он выводил, например [this] (http://stackoverflow.com/questions/25377355/processbuilder-cannot-run-bat-file-with-spaces- in-path/25377564 # 25377564) например – MadProgrammer
Спасибо за ответ, пробовал смотреть на него, и это кажется озадачивающим! Нужно ли добавлять новый метод? – lecardo
Вам просто нужно использовать 'Input/ErrorStream', я обычно использую' Thread' для этого, так как мне нравится называть 'Process # waitFor', поэтому я могу получить код выхода для' Process', но так как это блокирующий вызов, я использую 'Thread', чтобы потреблять поток, но это только я – MadProgrammer