Это не возможно, по крайней мере, на Linux (другие Нельды могли бы позволить его); думайте об этом, когда Вы запускаете скрипт, оболочка должна считать его для знания, что сделать.
Ничего конкретного не происходит. Все процессы совместно используют тот же набор страниц, и каждый получает его собственную частную копию, когда он хочет изменить страницу.
Когда система формует ветвление, обычно (это может зависеть от реализации), это также отмечает страницы как только для чтения, и отмечает родительский процесс как ведущее устройство этих страниц.
При попытке записать в эти страницы, происходит отсутствие страницы, и ОС вступает во владение, копируя весь список страниц или просто измененных (снова, зависящий от реализации), таким образом, запись будет иметь перезаписываемую копию.
Когда существует несколько процессов, разветвленных от того же, когда "основной" процесс пишет в, он - память, другие процессы скопировали свои эквивалентные страницы.
Поведение форка ()зависит от того, есть ли в *nix-системе MMU или нет. В системе без -MMU (, такой как ранний PDP -11s ), системный вызов fork ()копировал всю родительскую память для каждого потомка. В nix-системе *на основе MMU -ядро помечает все не-страницы стека как R/O и разделяет их между родителем и дочерним элементом. Затем, когда какой-либо процесс записывает на какую-либо страницу, MMU перехватывает эту попытку, затем ядро выделяет доступную для записи страницу и обновляет таблицы страниц -MMU, чтобы они указывали на доступную для записи страницу. Такое поведение копирования -на -записи обеспечивает -увеличение скорости, поскольку первоначально для каждого дочернего процесса необходимо выделить и клонировать только частный стек.
Если вы выполняете некоторый родительский код между каждым вызовом fork (), то результирующие дочерние процессы будут отличаться страницами, которые были изменены родителем. С другой стороны, если родитель просто выдает несколько вызовов fork (), например. в цикле, то дочерние процессы будут практически идентичными. Если используется локальная переменная цикла, то она будет отличаться в каждом дочернем стеке.