Получение доступа к стандартному выходному потоку (cout) из сыновней задачи

Поведение выходных данных, записанных в выходной поток stdout или по м ещенных в объект cout, отличается для различных порожденных PVM-задач. Именно родительский процесс решает, что в конце концов с ними должно произойти. Ко г да выходные данные из порожденно г о потомка поме щ аются в объект cout или cerr, они перехватываются демоном pvmd и упаковываются в стандартные PVM-сообщения, которые отправляются задаче с идентификатором TaskId, заданным родителем. Родительский процесс может связать пару (TaskId, Code) с объектами cout и cerr свое г о сыновне г о процесса. Это реализуется с помо щ ью функции pvm_setopt (), которая вызывается перед порождением потомка. Если значение TaskId равно 0, сооб щ ения попадут велу щ ему демону pvmd и будут записаны в е г о журнал ре г истрации ошибок. Порожденный процесс может установить значение переменной TaskId равным 0 или значению, унаследованному от е г о родителя, или собственному значению идентификатора TaskId. Это означает, что именно родительский процесс управляет тем, куда будет записано содержимое объектов cout или cerr. Порожденнал PVM-задача может назначить дру г ие PVM-задачи для получения данных, поме щ енных в объекты cout или cerr. Обычно записью любых важных данных в потоки stdout или stdin управляет порождаю щ ая задача, а всем остальным ведает веду щ ий демон pvmd.

Больше книг — больше знаний!

Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом

ПОЛУЧИТЬ СКИДКУ