Я пытаюсь сделать следующее:
Центральное приложение, давайте назовем его альфа, принимает пользовательские входные данные в командной строке и, основываясь на этих входных данных, порождает другие процессы, называет их браво, чарли и т. Д. Я хочу, чтобы родитель и потомок общались в обоих направлениях. То есть альфа может читать и писать в браво (соответственно чарли) и наоборот
В C ++ я могу использовать fork (), затем exec () и использовать FIFO-s — здесь есть несколько отличных учебников:
Pipe, Fork и Exec — двусторонняя связь между родительским и дочерним процессами
а также
http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel5b.shtml
Но мне интересно, возможно ли то же самое в D? Я не нахожу много от поиска в сети.
Похоже, стандартная библиотека D поддерживает создание каналов и дочерних процессов.
Как это случилось, я помню ваш предыдущий пост здесь и сделал вывод, что два вопроса связаны между собой. За то, что вы задали в предыдущем вопросе (Переключатель cas Альтернатива в D) вам действительно не нужно какое-то сложное межпроцессное взаимодействие — вам в основном нужно звонить std.process.execute()
и получить вывод. Думайте об этом как о функции, аналогичной POPEN ().
Проверьте этот поток и посмотрите, как я реализовал очень простую команду «fact», используя execute () … Вы должны быть в состоянии построить намного более надежное решение поверх этого кода, если реализуете все необходимые проверки.