В C/C++ вы читаете stdout из подпроцесса через dup2 (..., STDERR_FILENO) [1]. Я действительно не понимаю, что делает dup2; могу ли я сделать это дважды для двух подпроцессов, которые работают одновременно? Я вижу проблему с моей существующей реализацией, когда один из них не может завершить чтение STDERR, и мне интересно, является ли это ошибкой реализации или просто невозможно.Можно ли перенаправить stdout для двух подпроцессов?
Редактировать: Они созданы отдельными темами. Запуск и остановка могут чередоваться.
[1] например. например Linux 3.0: Executing child process with piped stdin/stdout
Таким образом, оба процесса записывались в один и тот же дескриптор файла? Итак, как родитель объясняет разницу между тем, из какого процесса поступают данные? –
@JohandeVries, если вы не напечатаете идентификатор дочернего процесса, нет способа узнать, какой процесс написал на него. –
Последующий вопрос: http://stackoverflow.com/questions/42117551/race-condition-in-starting-up-sub-processes-causes-reading-from-pipe-to-hang –