FIFO / именованные трубы в D?

Я пытаюсь сделать следующее:

Центральное приложение, давайте назовем его альфа, принимает пользовательские входные данные в командной строке и, основываясь на этих входных данных, порождает другие процессы, называет их браво, чарли и т. Д. Я хочу, чтобы родитель и потомок общались в обоих направлениях. То есть альфа может читать и писать в браво (соответственно чарли) и наоборот

В C ++ я могу использовать fork (), затем exec () и использовать FIFO-s — здесь есть несколько отличных учебников:
Pipe, Fork и Exec — двусторонняя связь между родительским и дочерним процессами
а также
http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel5b.shtml

Но мне интересно, возможно ли то же самое в D? Я не нахожу много от поиска в сети.

3

Решение

Похоже, стандартная библиотека D поддерживает создание каналов и дочерних процессов.

http://dlang.org/phobos/std_process.html

4

Другие решения

Как это случилось, я помню ваш предыдущий пост здесь и сделал вывод, что два вопроса связаны между собой. За то, что вы задали в предыдущем вопросе (Переключатель cas Альтернатива в D) вам действительно не нужно какое-то сложное межпроцессное взаимодействие — вам в основном нужно звонить std.process.execute() и получить вывод. Думайте об этом как о функции, аналогичной POPEN ().

Проверьте этот поток и посмотрите, как я реализовал очень простую команду «fact», используя execute () … Вы должны быть в состоянии построить намного более надежное решение поверх этого кода, если реализуете все необходимые проверки.

1

По вопросам рекламы [email protected]