我想用一個新的os.execv替換當前進程,這個工作正常,除非你沒有任何參數。沒有args參數的os.execv
即使我沒有參數傳遞到我想要啓動的進程,我該如何調用該函數?
# Works fine, unless the arguments tuple wouldn't exist or be empty
os.execv('process.exe', ('arg1', 'arg2'))
我想用一個新的os.execv替換當前進程,這個工作正常,除非你沒有任何參數。沒有args參數的os.execv
即使我沒有參數傳遞到我想要啓動的進程,我該如何調用該函數?
# Works fine, unless the arguments tuple wouldn't exist or be empty
os.execv('process.exe', ('arg1', 'arg2'))
好吧,要求在IRC之後他們指出,爲什麼是這樣工作的。
第一個參數(arg0)通常是你正在執行的文件名(例如sys.argv [0]),所以第一個參數應該總是文件名。
這解釋了爲什麼參數不是可選的,在IRC上他們說arg0是應用程序認爲它的名字是什麼。
這對我的作品
os.execv('process',())
。您確定要process
不帶參數的工作?
或者嘗試EXECL
os.execl('process')
這三個變體可以解決問題:
cmd = '/usr/bin/vi'
os.execv(cmd, ('',))
os.execv(cmd, [''])
os.execl(cmd, '')
一般一個參數列表(sys.argv中)的第一個參數是已經用於調用應用程序的命令。 因此,最好是使用那些之一:
cmd = '/usr/bin/vi'
os.execv(cmd, (cmd,))
os.execv(cmd, [cmd])
os.execl(cmd, cmd)
這是一個正確的答案,索引0處的參數是程序的名稱 – 2014-11-07 12:25:08
這將會給一個錯誤的元組是空的,我(在Python 2.7版),是的,我知道它不帶參數,它是一個py2exe軟件包。 – 2010-08-02 09:38:49
我使用2.5以便可能是問題。你用execl()試過了嗎? – 2010-08-02 09:58:23
似乎execl在幕後使用execv:http://pastebin.com/W1YKpxe7 – 2010-08-03 12:48:41