我有一个Python脚本,它作为Windows服务运行。该脚本通过以下方式派生另一个进程:
with subprocess.Popen( args=[self.exec_path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) as proc:
导致以下错误:
OSError: [WinError 6] The handle is invalid
File "C:\Program Files (x86)\Python35-32\lib\subprocess.py", line 911, in __init__
File "C:\Program Files (x86)\Python35-32\lib\subprocess.py", line 1117, in _get_handles
1117行输入subprocess.py
为:
p2cread = _winapi.GetStdHandle(_winapi.STD_INPUT_HANDLE)
这使我怀疑服务流程没有与之关联的STDIN(TBC)
通过提供文件或空设备作为stdin参数,可以避免这种麻烦的代码popen
。
在 Python 3.x中 ,您可以简单地通过stdin=subprocess.DEVNULL
。例如
subprocess.Popen( args=[self.exec_path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=subprocess.DEVNULL)
在 Python 2.x中 ,您需要将文件处理程序设置为null,然后将其传递给popen:
devnull = open(os.devnull, 'wb')
subprocess.Popen( args=[self.exec_path], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, stdin=devnull)
问题内容: 我遇到了一个非常奇怪的问题。我需要在Jenkins中配置代理,以便 能够访问其中一项作业的SVN存储库。我这样做有两种方式: 从命令行使用必需的参数启动Jenkins 在jenkins.xml文件中定义参数时,将Jenkins作为Windows服务启动。 Starting from command line : -Dhudson.model.DirectoryBrowserSuppor
句柄是什么?在Windows中,句柄的存在就像指针的标识一样,但这样的答案显示不是你们需要的。闲暇之余,笔者摘录以下Windows句柄的解释。用户可以端着咖啡再看Windows结构体里面句柄的作用表述。 这里我列举词条中的关于句柄的叙述不当之处,至于如何不当先不管,继续往下看就会明白: 句柄是什么? Windows 之所以要设立句柄,根本上源于内存管理机制的问题—虚拟地址,简而言之数据的地址需要变
当我启动start WebLogic.cmd在mydomed\bin中时,我的服务器正常工作。当我注销时,它会自动停止。在这里,我试图创建一个窗口服务,如oracle文档“http://docs.oracle.com/cd/E11035_01/wls100/server_start/winservice.html”中所述。 但我的服务不再说这与此无关。 这是我创建的2个文件 1.)run.cmdD
问题内容: 我在Windows 7 32位操作系统中安装了postgreSQL二进制文件;我可以从cmd启动服务器,但 不能将其作为Windows服务运行。 这是我尝试手动启动服务时遇到的错误: 我要做的就是 双击我的Java应用程序启动到Windows后,我需要流畅地运行我的应用程序而没有任何数据库错误。我不能这样做,因为postgreSQL没有作为Windows服务运行。 我在Windows事
问题内容: 我已经用Java构建了一个小守护进程,我想在Unix(例如Debian 5)下作为服务运行它。我读过有可能使用Java包装器,但是难道没有其他更容易实现的选项吗?我不能只使用Unix命令吗? 问题答案: 好吧,即使您退出外壳程序也要运行Java程序,以下是最简单的方法:
问题内容: 我正在尝试自己学习编程,但仍在尝试掌握它。我收到以下错误: java.io.IOException:句柄无效 这是我的代码 我相信,每当我调用该方法时,都会出现错误,当我尝试显示默认构造函数中的字节数时,它可以很好地工作并显示。 问题答案: 好了,在实际开始使用它之前,请先关闭构造函数的块。将结束部分从构造函数中移到完成后将被调用的位置,例如在main 下方调用或单独的close方法。