Perl принимает скипт через STDIN.После нажатия CTRL-D Perl знает «Конец скрипта».После этого скрипт выполняется.
Теперь мой вопрос: я хочу сделать это из Java.
- Открыть процесс Perl
- Скопировать скрипт в STDIN изPerl-Process
- КАК Я СИГНАЛИЗИРУЮ Perl CRTL-D БЕЗ ЗАКРЫТИЯ ПОТОКА (изнутри java)
- Отправить некоторые входные данные в сценарий
- получить некоторые выходные данные из сценария.
proc = Runtime.getRuntime().exec("perl", env);
commandChannel = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream()));
responseChannel = new BufferedReader(new InputStreamReader(proc.getInputStream()));
InputStreamReader mymacro = new InputStreamReader(getClass().getResourceAsStream("macro.perl"));
char[] b = new char[1024];
int read;
try
{
while ((read = mymacro.read(b)) != -1)
{
commandChannel.write(b, 0, read);
}
commandChannel.flush();
PERL IS WAITING FOR END OF SCRIPT; ??
} ...