SORU
3 Temmuz 2010, CUMARTESİ


'shell=True' alt süreci içinde gerçek anlam

subprocess modülü ile farklı işler arıyorum. Ancak bir sorum var.

Aşağıdaki kodları:

callProcess = subprocess.Popen(['ls', '-l'], shell=True)

ve

callProcess = subprocess.Popen(['ls', '-l']) # without shell

Her iki çalışma. Belgeleri okuduktan sonra, shell=True kabuk kodu çalıştırma demek olduğunu bilmek için geldim. Bunun olmaması demek, süreci doğrudan başlatıldı.

Ben davam için tercih gereken bir işlemi çalıştırmak ve çıktısını almak istiyorum. Parası ben deniz kabuğu içinde ya da dışında " demekten ne var.

CEVAP
3 Temmuz 2010, CUMARTESİ


Kabuk üzerinden arama değil yararı 'sır programı. bir çağırma değildir. POSIX, ortam değişkeni SHELL ikili olarak çağrılan denetimleri "kabuk." Windows, bourne shell torunu, sadece cmd.exe yok hayır.

Böylece kabuk yürütmesini Kullanıcının seçtiği bir programı çağırır ve platform bağlı. Genel olarak konuşursak, kabuk üzerinden çağırmaları önlemek.

Kabuk üzerinden çağırarak ortam değişkenleri genişletmek için izin ve Shell'in her zamanki mekanizmasına göre toplanır dosya. POSIX sistemlerinde, shell dosyaların bir listesi için dosya toplanır genişletir. Windows, dosya, küresel bir çaba (örneğin, "*.*") kabuk tarafından genişletilmiş değil, her neyse (ama komut satırında ortam değişkenlericmd.exe genişletilmiş).

Eğer açılımları ve dosya toplanır ortam değişkeni eğer, kabuk ile alt program çağırmaları yapılan ağ hizmetleri 1992-ish ILS saldırılar araştırma. Örnekler sendmail çeşitli arka kapılar ILS da dahil.

Özet olarak, shell=False kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007
  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • Menglong Tav

    Menglong Tav

    18 Temmuz 2010