Поведение форка ()зависит от того, есть ли в *nix-системе MMU или нет. В системе без -MMU (, такой как ранний PDP -11s ), системный вызов fork ()копировал всю родительскую память для каждого потомка. В nix-системе *на основе MMU -ядро помечает все не-страницы стека как R/O и разделяет их между родителем и дочерним элементом. Затем, когда какой-либо процесс записывает на какую-либо страницу, MMU перехватывает эту попытку, затем ядро выделяет доступную для записи страницу и обновляет таблицы страниц -MMU, чтобы они указывали на доступную для записи страницу. Такое поведение копирования -на -записи обеспечивает -увеличение скорости, поскольку первоначально для каждого дочернего процесса необходимо выделить и клонировать только частный стек.
Если вы выполняете некоторый родительский код между каждым вызовом fork (), то результирующие дочерние процессы будут отличаться страницами, которые были изменены родителем. С другой стороны, если родитель просто выдает несколько вызовов fork (), например. в цикле, то дочерние процессы будут практически идентичными. Если используется локальная переменная цикла, то она будет отличаться в каждом дочернем стеке.
Наконец-то я нагуглил ответ на проблему, которая действительно работает и очень проста...
При запуске linux -brprinter -установщика -... инструмента установки принтера он запрашивает DeviceURI, который я всегда просто указывал (вариант #10 )как
DeviceURI lpd://BRWEC5C68323304/BINARY_P1
, что является типичным значением по умолчанию для cups при добавлении принтера напрямую через cups на локальном хосте :631. И это всегда работало для нескольких разных принтеров Brother с Wi-Fi и нескольких разных маршрутизаторов. Вот только с G3100 я столкнулся с описанной выше проблемой.
Какой-то анонимный постер, который я наконец нашел в гугле, предложил, чтобы когда установщик запрашивает DeviceURI, вместо этого указывать (выбор #11 )IP-адрес:
DeviceURI socket://192.168.1.47
(используя ваш собственный IP-адрес, конечно же ). И это сразу сработало.
Почему он теперь работает с socket://
и больше не работает с lpd://
, мне неведомо (и не объясняется постером )из Google. Не то, чтобы это действительно имело значение, просто любопытно, :у кого-нибудь есть идеи по этому поводу???