有一些奇怪的行为,为什么不在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'
答案 0 :(得分:2)
您的第一个参数被脚本名称覆盖。可能你想要的是这个:
os.execvp('./pro', ['./pro', '--resume', 'a', 'b'])
赋予execvp
的参数向量中的第一个参数按惯例是程序本身的名称。使用'#!'
机制来调用python解释器时,此约定将升级为事实。
我的意思是如果./pro
是二进制文件(例如来自C程序),你会看到'--resume'
作为参数0,但是调用解释器的过程会覆盖这里的论点。但我怀疑你实际上是想将'--resume'
作为参数传递给你的子程序。