Коротко: существует огромное приложение Linux с большим количеством дочерних процессов, и мне нужно что-то вроде этого:Временные отключение дочерние процессы из родительского терминала во время выполнения
/* parent process, far from fork*/
suppress_child_output_to_parent_tty();
printf("important message");
/* huge piece of code */
printf("important message");
restore_child_output_to_parent_tty();
Я знаю, что существует стандартный способ сделать это по
- макияж трубы,
- вилки, перенаправлять STDOUT в эту трубу,
- выберите & чтение трубы/запись в родительский стандартный вывод в некотором цикле в другом потоке,
- вручную приостановить эту петлю при необходимости
Но я должен НЕТ длительное использование живых потоков для того, мою работу приложений в нескольких случаев с многие многопоточные дочерние процессы, и есть некоторые проблемы с планировщиком ОС, действительно, я должен экономить потоки процессора. И поэтому я ищу несколько элегантных ОС для блочного дочернего STDOUT.
Что я могу сделать?
Вы хотите, чтобы дочерний процесс работал, когда «огромный кусок кода» работает, или временно приостанавливает его решение? – Joni
Да, приостановка детского процесса приемлема. – Jettatura