Выполнить процесс из Java и сохранить его для ввода - PullRequest
1 голос
/ 19 декабря 2010

Я хочу закодировать интерфейс для приложения на Фортране с использованием Java, поскольку, насколько я знаю, у Фортрана нет поддержки графического интерфейса.(Кажется, что японский не работает с ifort, поправьте меня в этом)

Я хочу собрать графический интерфейс с NetBeans, а затем просто отправить команды в фоновую программу на Фортран.Любой совет о том, как удаленно управлять приложением командной строки из Java?

ура, Дэвид

Ответы [ 4 ]

1 голос
/ 19 декабря 2010

Если ваша цель - графический интерфейс для программы на Фортране, вы можете полностью ее кодировать на Фортране с помощью графической библиотеки dislin. dislin - это, прежде всего, пакеты для построения графиков, но содержит процедуры для создания графических интерфейсов. Он доступен для нескольких операционных систем. Эти подпрограммы имеют много возможностей, хотя и не так обширны, как полноценная библиотека окон. Например, вы можете кодировать процедуры обратного вызова в Fortran, чтобы реагировать на щелчки мышью по кнопкам в окнах дислинга.

1 голос
/ 19 декабря 2010

У вас есть 2 возможности.

  1. Runtime.getRuntime().exec()
  2. Использовать ProcessBuilder.

Я предпочитаю построитель процессов.Он был представлен в версии 1.4 и предоставляет лучший API.

Обратите внимание, что при запуске одного процесса от другого вы получаете некоторое снижение производительности.Если это критично для вас, я бы порекомендовал вам сделать так, чтобы ваша программа на Fortran читала команды из стандартного ввода.Затем вы можете запустить эту программу и вставить свои команды в стандартный ввод.С ProcessBuilder это очень просто.Такое межпроцессное взаимодействие работает довольно быстро.

0 голосов
/ 19 декабря 2010

Также вы можете общаться через именованный канал .AFAIK, нет никакого способа создать их из Java (вы должны будете либо вызвать mkfifo в Linux, либо использовать winapi в Windows), но после создания вы можете рассматривать их как "нормальные""файлы для операций чтения / записи.

0 голосов
/ 19 декабря 2010

Я считаю, что

Runtime.getRuntime().exec(command);
...