2012-10-12 61 views
0

當執行os.system(comm)時,我想退出子進程。執行子進程中的指令

我的代碼是:

pid = os.fork() 
if pid == 0: 
     #instruction 
else: 
     comm = "python file.py" 
     os.system(comm) 
     sys.exit("error") 

現在,我的文件file.py包含一個循環,我可以從它那裏得到了只有當條件滿足。但是,即使條件不滿足,程序也會退出循環,並顯示消息error

此外,它不執行file.py中的其餘指令。

file.py是:

while 1: 
     if(condition): 
      break 
# rest of instructions 
+0

@JoachimPileborg請注意格式化時的代碼,縮進在Python中是有意義的 – Kos

+0

@Kos我知道,另一方面,我寧願留下由作者格式化的代碼,正因爲如此,如果OP有錯誤的縮進?如果我「修復」它可能不再是可以回答的問題。 –

+0

我的身份在我自己的代碼中完成得很好,我在這裏沒有注意。 –

回答

0

您應該使用os._exit(返回碼) 或者更好,而不是使用os.system使用功能os.exec之一(os.execvp或os.execvpe)

有關更多機會,請使用子流程模塊。