2013-05-18 3 views
0

Я пытаюсь выполнить код C из кода Java, который уже скомпилирован и выполнен, но я не получаю никакого вывода из исполняемого файла. Может ли кто-нибудь помочь мне выполнить эту задачу?Не получается вывод после вызова исполняемого файла C из кода Java

Код выглядит следующим образом.

public class Test { 
    public static void main(String args[]) { 
     try { 
      Process processCompile = Runtime.getRuntime().exec("e:/Sample.exe"); 
     } catch(Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 
} 
+0

C исполняемые файлы ничем не отличаются от других исполняемых файлов, по крайней мере, с точки зрения выполнения процесса. Как отмечает @JunedAhsan, проблема заключается в том, что вы сами должны сами читать вывод исполняемого файла (и либо показывать его, либо что-то делать с ним). – tucuxi

+0

Пройдите статью Java World, связанную с информацией '' exec'. страница] (http://stackoverflow.com/tags/runtime.exec/info), реализуйте ** все ** рекомендации, а затем используйте «ProcessBuilder» для создания «Процесса». –

ответ

0

Этот метод будет работать только при запуске java-программы с правами администратора.

Если у вас есть привилегии, вы можете попробовать запустить процесс в оболочке «cmd» (которая разветвляется вашим Java-процессом). Реализация делает так, что это делается здесь «LinuxInteractor» (но есть в Linux). Просто небольшие изменения, необходимые для переноса на версию Windows.

Finding hard and soft open file limits from within jvm in linux (ulimit -n and ulimit -Hn)

+0

Программа C (Sample.exe) выполняется из кода Java, я проверил в диспетчере задач, но проблема в том, что я не получаю никакой консоли (вывод) из программы C – Sankar

5

Попробуйте это:

BufferedReader stdInput = new BufferedReader(new 
    InputStreamReader(processCompile .getInputStream())); 


// read the output from the command 
System.out.println("EXE OUTPUT"); 
while ((s = stdInput.readLine()) != null) { 
    System.out.println(s); 
} 
+0

Убедитесь, что ваш процесс C на самом деле возвращая что-то на консоль. Вышеуказанный код предназначен для захвата выходного процесса, если имеется некоторый вывод. –

+0

Спасибо, я получаю вывод ... – Sankar

+0

@Sankar вы можете принять ответ, чтобы другие могли воспользоваться им. –

 Смежные вопросы

  • Нет связанных вопросов^_^