您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Python中使用os.execvp

5b51 2022/1/14 8:23:11 python 字数 2256 阅读 613 来源 www.jb51.cc/python

我有一个关于在 Python中使用os.execvp的问题.我有以下用于创建参数列表的代码: args = [ "java" , classpath , "-Djava.library.path=" + lib_path() , ea , "-Xmx1000m" , "-server" , "code_swarm

概述

args = [ "java",classpath,"-Djava.library.path=" + lib_path(),ea,"-Xmx1000m","-server","code_swarm",params
       ]

当我使用“.join(args)输出一个字符串并将其粘贴到我的shell提示符中时,JVM启动正常,一切正常.如果我在Python脚本中使用os.system(“”.join(args)),一切都会有效.

但是下面的代码不起作用:

os.execvp("java",args)

我收到以下错误

Unrecognized option: -classpath [and then the classpath I created,which looks okay]
Could not create the Java virtual machine.

什么给出了什么?为什么复制/粘贴到shell或使用os.system()工作,而不是os.execvp()?

其他方式(复制和粘贴以及system())可以工作,因为shell会在空格处拆分命令行(除非它们被转义或引用).事实上,命令行作为一个数组传递给被调用的程序(与Windows不同),并且JVM期望找到一个只有“-classpath”的元素,后跟另一个带有类路径的元素.

您可以通过调用以下小型Python脚本而不是JVM来查看自己的差异:

#!/usr/bin/python
import sys
print sys.argv

总结

以上是编程之家为你收集整理的在Python中使用os.execvp全部内容,希望文章能够帮你解决在Python中使用os.execvp所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶