execvp()python中的双连字符

时间:2016-02-11 11:22:49

标签: python execvp

有一些奇怪的行为,为什么不在python中为execvp()运行双连字符( - ):

import os

os.execvp('./pro', ['--resume', 'a', 'b'])

# ./pro looks like this
##!/usr/bin/python

#import sys

#if len(sys.argv) >=3:
#    for i in sys.argv:
#        print i # expects './pro\n --resume\n a\n b\n', got './pro\n a\n b\n'

1 个答案:

答案 0 :(得分:2)

您的第一个参数被脚本名称覆盖。可能你想要的是这个:

os.execvp('./pro', ['./pro', '--resume', 'a', 'b'])

赋予execvp的参数向量中的第一个参数按惯例是程序本身的名称。使用'#!'机制来调用python解释器时,此约定将升级为事实。

我的意思是如果./pro是二进制文件(例如来自C程序),你会看到'--resume'作为参数0,但是调用解释器的过程会覆盖这里的论点。但我怀疑你实际上是想将'--resume'作为参数传递给你的子程序。