2010-08-01 15 views
5

Geçerli işlemi os.execv kullanarak yenisiyle değiştirmek istiyorum, herhangi bir argümanınız olmadığı sürece bu iyi çalışır.os.execv args bağımsız değişkeni

Başlatmak istediğim sürece geçmek için bir argümanım olmasa bile bunu nasıl çağırabilirim?

# Works fine, unless the arguments tuple wouldn't exist or be empty 
os.execv('process.exe', ('arg1', 'arg2')) 

cevap

6

Tamam, IRC'de soran sonra onlar da bu şekilde çalışır neden işaret deneyin.

İlk argüman (arg0) normalde çalıştırdığınız dosyanın dosya adıdır (örneğin sys.argv [0]), böylece ilk argüman her zaman dosya adı olmalıdır.

Bu, argümanların neden isteğe bağlı olmadığını açıklar, IRC'de arg0, uygulamanın adının ne olacağını düşünmesi gerektiğini söylediler. Genellikle argüman listesi (sys.argv) ilk parametre uygulamasını başlatmak için kullanılmıştı komuttur

cmd = '/usr/bin/vi' 
os.execv(cmd, ('',)) 
os.execv(cmd, ['']) 
os.execl(cmd, '') 

:

1

Bu

os.execv('process',()) 

size kanıtlar olmaksızın emin process eser vardır benim için çalışıyor?

Ya execl

os.execl('process') 
+0

, bu kadar

: Yani onlardan biri kullanmak daha iyidir Bir py2exe paketi. –

+0

2,5 kullanıyorum, bu sorun olabilir. Daha sonra execl() ile denediniz mi? –

+0

Yürütmenin sahnelerin arkasında execv kullanıyor olduğu gözüküyor: http://pastebin.com/W1YKpxe7 –

5

Bu üç varyant sorunu çözebilirsiniz.

cmd = '/usr/bin/vi' 
os.execv(cmd, (cmd,)) 
os.execv(cmd, [cmd]) 
os.execl(cmd, cmd) 
os.exec* documentation on python.org tanımlama grubu (piton 2.7 olarak) benim için boş olduğuna dair bir hata vermek ve evet ben argümanları olmadan çalışır bilecek
+1

bu doğru bir cevap, dizin 0'da argüman programın adıdır –

İlgili konular