繁体   English   中英

用Java编写Perl流程输入流

[英]Writing to a Perl Process Input Stream in Java

我正在尝试使用在UNIX上运行的java编程一个简单的Web服务器类。

WebServer类将调用一个perl脚本,该脚本将根据请求生成HTML。

考虑一下:

  1. 客户端发送HTTP POST请求到WebServer
  2. 阅读HTTP POST正文: "description=asd&action=add"
  3. HTTP POST byte[] byteParams写入byte[] byteParams如下所示
  4. 需要向Perl Process对象写入byteParams才能生成适当的HTML

码:

String postParams = "/usr/bin/env REQUEST_METHOD=POST QUERY_STRING= " +" CONTENT_LENGTH=" + contentLength + " CONTENT_TYPE=" + contentType + " /usr/bin/perl " + filename;
Process perlProcess = Runtime.getRuntime().exec(postParams);

DataOutputStream writeToPerl = new DataOutputStream(perlProcess.getOutputStream());             
//write the http post request body to writeToPerl    
writeToPerl.write(byteParams, 0, byteParams.length);            

InputStreamReader readFromPerlInputStream = new InputStreamReader(perlProcess.getInputStream());
BufferedReader readFromPerl = new BufferedReader(readFromPerlInputStream);    
BufferedReader readFromPerlError = new BufferedReader(new InputStreamReader(perlProcess.getErrorStream()));

因此,现在我们有了perlProcess对象,该对象将读取UNIX中的环境变量以生成适当的HTML。

写入Perl Process对象的DataOutputStream之后,它会根据输入(HTTP Post正文)自动写入其标准输出吗?

还是我需要告诉Process对象读取我刚刚写到DataOutputStream writeToPerl

我找到了问题的答案。

写入Perl Process对象的DataOutputStream之后,它将根据DataOutputStream的输入自动写入其标准输出( BufferedReader readFromPerl )。

我有一些文件许可问题,导致我问这个问题,因为在写入Perl对象的DataOutputStream后没有从Perl对象的BufferedReader中得到预期的结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM