В предыдущих версиях единственный способ такого взаимодействия состоял в автоматической отправке сигнала CHLD родительскому процессу и уничтожении дочернего процесса. Этого было достаточно для контроля за числом активных дочерних процессов, но недостаточно для текущих потребностей, когда дочерний процесс должен передавать описательную информацию о своих действиях.
При решении этой проблемы чаще всего применяются два метода. Один из них заключается в том, что родительский и дочерний процессы отправляют друг другу сообщения через дескриптор файла. Другой метод состоит в использовании разделяемой памяти, чтобы родительский и дочерний процессы имели совместный доступ к одной и той же переменной Perl. При изменении этой переменной в дочернем процессе изменения становятся видимыми и в родительском процессе. В настоящем paзделе показан пример адаптивного сервера с предварительным ветвлением, в котором для родительско-дочерней связи применяется канал. Решение на основе разделяемой памяти рассматривается в следующем разделе.
Ранее показано, как однонаправленные каналы, созданные с помощью функции pipe (), могут применяться набором дочерних процессов для отправки сообщений их общему родительскому объекту (см. раздел “Создание каналов с помощью функции pipe () ”). Такой же метод является идеальным и для этого приложения.
Во время запуска адаптивный сервер создает канал с использованием функции pipe ().
pipe(CHILD_READ,CHILD_WRITE);
2014-12-13 22:46:52
это интересно Последнее время туристические путешествия стали одним из основных способов провести отпуск и организовать свой отдых. Но как известно для выезда за пределы страны необходим загранпаспорт, на получение которого может уйти некоторое время. Ускоренное получение загранпаспорта возможно при помощи сайта
castour.ru и при этом затраты на получение будут минимальны.