Программа должна быть разветвлена, затем родитель должен прочитать пользовательский ввод, отправить его ребенку; ребенок должен разобраться с этим, а затем отправить результат родителю, который его печатает (это необходимо для работы).
Я сделал часть этого, но программа блокируется после первого чтения с fifo.
Я подозреваю, что проблема где-то между строк 122–199. Отключение канала приводит к тому, что программа перепрыгивает через scanf на 185 и зацикливается бесконечно. Закрытие и повторное открытие канала перед записью и после чтения приводит к тому же эффекту.
Вот источник: ссылка .
Позднее редактирование (уточнение):
Родительские блоки перед printf на 184, когда он читает вторую команду (в первый раз, кажется, она работает нормально).
Я не реализовал часть "ребенок отправляет материал обратно в родительскую часть". В данный момент я просто хочу, чтобы дочерний процесс выводил данные, которые он получает через канал от родителя, и затем возвращал родительский элемент управления для чтения другой команды.
Ребенок живет в состоянии паузы (pause ()), в то время как родитель читает входные данные и отправляет их по каналу, затем он будит ребенка и сам переходит в состояние паузы. Дочерний объект считывает данные из канала и выводит их, затем пробуждает родителя и переходит в спящий режим.