小编use*_*189的帖子

从Java运行Perl-Script(嵌入在Perl中)

Perl通过STDIN接受一个scipt.按下CTRL-D后,perl知道"脚本结束".执行此操作后,将执行该脚本.

现在我的问题是:我想从Java那里做到这一点.

  1. Open Process Perl
  2. 将脚本复制到Perl-Process的STDIN中
  3. 我如何在没有关闭流的情况下发出CRTL-D信号(来自java内部)
  4. 将一些输入发送到脚本
  5. 从脚本中获取一些输出.

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; ??
}  ...
Run Code Online (Sandbox Code Playgroud)

java perl pipe eof

5
推荐指数
1
解决办法
1219
查看次数

标签 统计

eof ×1

java ×1

perl ×1

pipe ×1