Bir zincirin ilk süreçte Gerçek shell = kullanarak nasılsa mansap görevleri stdout'u düşer gibi görünüyor: ... İlk süreç kullanımı kabuğu yapmaNeden kabuk = True alt süreçimi kullanıyor. Pop-up stdout?
p1 = Popen(['echo','hello'], stdout=PIPE)
p2 = Popen('cat', stdin=p1.stdout, stdout=PIPE)
p2.communicate()
# outputs correctly ('hello\n', None)
= Doğru bir şekilde çıkışını öldürür
p1 = Popen(['echo','hello'], stdout=PIPE, shell=True)
p2 = Popen('cat', stdin=p1.stdout, stdout=PIPE)
p2.communicate()
# outputs incorrectly ('\n', None)
Kabuk = İkinci işlemde doğru görünmüyor. Bu beklenen davranış mı?
Teşekkür! Gelecek kuşak için, [docs] (http://docs.python.org/library/subprocess.html): On Unix'te, shell = True: Eğer bir satırlar bir satır ise, ilk öğe komut dizesini belirtir, ve ek öğeler kabuğun kendisine ek argümanlar olarak ele alınacaktır. Yani, Popen eşdeğer: 'Popen (['/ bin/sh', '-c', args [0], args [1], ...])' –
çok zayıf bir şekilde belgelenmiş, Benim nacizane fikrime göre – Davide