ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1457957 Топик полностью
klen (22.08.2024 18:36, просмотров: 64) ответил Dingo на Можете подсказать, хоть и вопрос больше для stackoverflow: как под Linux сделать так, чтобы stdout дочернего и родительского процессов был одним и тем же? Догадываюсь, что может возникнуть каша, но это уже следом думать буду. Понял, что dup2() и pipe() использовать, но как их применить не соображу. Сейчас при запуске дочернего он захватывает stdout, и что писал родительский остаётся в буфере до завершения дочернего. Как сделать одновременно?
очень просто. вкаждом процессе что зачат ядром рождаются три файла с дескрипторами 0, 1 и 2 - это stdin stdout и stderr. как известно это внутри процесса они 0 1 2, но на самом деле они есть обычные символьные файлы в FS и доступны с наружи. для доступа к ним снаружи нужно знать где они располагаются чтоб их открить и записать в них - для этого нужно знать PID процесса расщарить выввод-вывод которого хочется. 

лежат они родимые в

/proc/PID/fd/0

/proc/PID/fd/1

/proc/PID/fd/2

остается только их открыть и начать работать. ниже картинка с примером как оное выглядит если не в коде а в другой консоли всунуть

но модно теперь это делать через файловую систему ядра : /sys