我正在尝试在VMS上运行一个非常简单的CGI服务器,用python完成。
import sys
from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler
server_address=('',8080)
httpd = HTTPServer(server_address, CGIHTTPRequestHandler)
httpd.serve_forever()我的问题是,它正确地提供静态内容,并试图执行CGI-s (它在正确的位置,我在Apache中使用了这些CGI,所以这部分肯定不是问题),但它挂在某个地方。这是我不知道的关于VMS的事情。
任何指向正确方向的指针都将不胜感激。:)
更新:简化后,我需要在VMS上执行一个程序,并以某种方式获得该程序的结果。对我来说,任何关于执行子进程并获得其结果的引用都足够了。
发布于 2011-05-30 22:14:02
你使用的是http://hg.vmspython.org/vmspython/的Python端口吗?
如果是这样,我认为this thread和this file (它似乎实现了一种形式的popen2)可能掌握着拯救您的钥匙。端口中似乎有特定于虚拟机的模块(至少是vms.starlet、vms.rtl.lib、vms.dvidef、vms.clidef),它们为虚拟机的spawn函数等提供接口。然而,文档似乎参差不齐或根本不存在。
发布于 2011-05-30 18:49:05
如果可用,CGIHTTPServer.py使用os.fork,如果没有,则使用subprocess.Popen。
请参阅run_cgi method的源代码。
使用subprocess模块进行实验,看看它是否/如何在虚拟机上工作。
发布于 2011-05-25 21:07:11
要执行子进程并在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特性。
http://docs.python.org/library/subprocess.html
https://stackoverflow.com/questions/5864139
复制相似问题