1

我正在尝试使用在 UNIX 上运行的 java 编写一个简单的 webserver 类。

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

考虑一下:

  1. 客户端向 WebServer 发送 HTTP POST 请求
  2. 阅读 HTTP POST 正文:"description=asd&action=add"
  3. HTTP POST Body 写入byte[] byteParams如下所示
  4. 需要写入byteParamsPerl Process 对象以生成适当的 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

4

1 回答 1

0

我找到了我的问题的答案。

在写入DataOutputStreamPerl Process 对象后,它会BufferedReader readFromPerl根据DataOutputStream.

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

于 2013-03-10T15:09:14.803 回答