簡體   English   中英

Windows 上的 os.exec

[英]os.exec on Windows

我有一個腳本將os.execvp調用到另一個 Python 實例中。 執行此操作后,我似乎附加到了cmd.exe實例,而不是我剛剛創建的 Python 實例。 然而,Python 實例響應Ctrl+C

H:\bin>Python 3.2.1 (default, Jul 10 2011, 21:51:15) [MSC v.1500
 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print('hi')
Can't find file ('hi')

H:\bin>

H:\bin>
KeyboardInterrupt
>>> echo hi
hi

調用exec

from sys import argv
os.execvp('python', argv)

根據在 Linux 上可能看到的行為,如何將原始 Python 實例替換為新實例?

在 Unix 上,執行二進制文件分為兩個階段 - fork(3)克隆當前進程和exec(3)將可執行文件加載到地址空間。 在 windows 上,只有CreateProcess與 fork+exec 做同樣的事情。

對於可移植性,最好的辦法是使用subprocess.Popen (與 os.* 對應物不同,它還在 Windows 上進行正確的文件名引用),如http://docs.Z23EEEB4347BDD26BFC6B7EE9A3B755DD產卵家族

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM