Предполагается, что среда UNIXish / POSIXish.
EOF в конвейере сигнализируется отсутствием данных для чтения, то есть read()
возвращает длину 0. Обычно это происходит, когда левая рукаПроцесс завершает работу и закрывает свой стандартный вывод.Поскольку вы не можете читать из канала, у которого другой конец закрыт, read
в processText указывает на EOF.
Если createText не должен завершиться, закрывая свой вывод, это будет неконечная программа, которая втрубопровод плохая вещь.Даже если не в конвейере, программа, которая никогда не заканчивается, обычно некорректна (исключаются странные случаи, такие как yes(1)
).
Вы можете читать из канала, пока вы не получите EOF или IOError (errno.EPIPE), который бы также указывал, что читать нечего.
У меня естьне проверял ваш код, он делает что-то неожиданное?