質問
Pythonで行われたVMで非常にシンプルなCGIサーバーを実行しようとしています。
import sys
from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler
server_address=('',8080)
httpd = HTTPServer(server_address, CGIHTTPRequestHandler)
httpd.serve_forever()
私が抱えている問題は、静的コンテンツを適切に提供し、CGI-Sを実行しようとすることです(適切な場所にあり、IhaveはそれらのCGIをApacheで使用して、その部分は間違いなく問題ではありません)が、どこかに吊るします。それは私がVMについて知らないものです。
正しい方向へのポインターは大歓迎です。 :)
更新:簡素化して、VMSでプログラムを実行し、そのプログラムの結果をどうにか取得する必要があります。サブプロセスの実行と結果を得ることへの言及は、私にとって十分です。
解決
からPythonポートを使用していますか http://hg.vmspython.org/vmspython/ ?
もしそうなら、私は思う このスレッド, 、 と このファイル (の形式を実装しているようです popen2
)、あなたの救いの鍵を保持することができます。 VMS固有のモジュールがあるように見えます(少なくとも vms.starlet
, vms.rtl.lib
, vms.dvidef
, vms.clidef
)VMのようなものにインターフェイスを提供するポートで spawn
関数。ただし、ドキュメントはむらがあるか存在しないようです。
他のヒント
CGIHTTPServer.py
使用します os.fork
可能な場合は、 subprocess.Popen
そうでない場合。
のソースコードを参照してください run_cgi
方法.
で実験します subprocess
VMでそれがどのように機能するかを確認するモジュール。
サブプロセスを実行し、POSIXで出力を取得するには:
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:13:53)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from subprocess import Popen, PIPE
>>> output = Popen(['/bin/ls', '/'], stdout = PIPE).communicate()[0]
>>> print output
bin
boot
dev
etc
home
..snip..
root
sbin
>>>
これは明らかにLinuxにあるので、PythonまたはサブプロセスモジュールのVMS詳細はわかりません。