Работа в Linux и использование C ++.
У меня есть программа, которая инициирует поток.
Мне нужен основной поток и дочерний поток для связи через printf и scanf
(код для обоих потоков использует scanf и printf и предполагает, что он связывается с stdin и stdout. Я должен сохранить это так).
Мне удалось переопределить printf и scanf, так что я имею полный контроль над этими функциями
(и я могу определить вызывающий поток, используя * pthread_self *).
Осталось создать 2 файловых дескриптора, по одному для каждого направления сообщения, и буферизовать сообщение.
Как это можно сделать?
Запись в файл на диске не решает мою проблему, так как связь может быть очень продолжительной, и я не могу позволить себе сохранить ее на диске. Однако я знаю, что поток чтения будет читать данные вскоре после их записи, поэтому не требуется много буферизации.
В частности, важно, что если один поток вызывает scanf ("% s", & x) , то он будет заблокирован, пока другой поток не напишет некоторую строку , а не добавит пробел (поэтому строка не читается до того, как полностью написана).