似乎在链的第一个进程中使用 shell=True 会以某种方式从下游任务中删除标准输出:
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)
shell=True 在第二个进程上似乎并不重要。这是预期的行为吗?