チェーンの最初のプロセスでshell=Trueを使用すると、ダウンストリームタスクからstdoutが何らかの形で削除されるようです。
p1 = Popen(['echo','hello'], stdout=PIPE)
p2 = Popen('cat', stdin=p1.stdout, stdout=PIPE)
p2.communicate()
# outputs correctly ('hello\n', None)
最初のプロセスでshell=Trueを使用すると、出力が何らかの形で強制終了されます...
p1 = Popen(['echo','hello'], stdout=PIPE, shell=True)
p2 = Popen('cat', stdin=p1.stdout, stdout=PIPE)
p2.communicate()
# outputs incorrectly ('\n', None)
2番目のプロセスでshell=Trueは問題ではないようです。これは予想される動作ですか?