>Окей, а где это специфицировано (не нашел такого описания в POSIX мане)?
>Или это платформо-зависимая имплементация? Вот кусок текста из SUSv3 касательно потоков:
A process shall be created with a single thread. If a multi-threaded process calls fork(), the new process shall contain a replica of the calling thread and its entire address space, possibly including the states of mutexes and other resources. Consequently, to avoid errors, the child process may only execute async-signal-safe operations until such time as one of the exec functions is called.
Что касается механизма COW, то это - просто часто применяемая оптимизация, POSIX не требует именно такого поведения. Просто на системах, которые реально при выполнении fork() копируют область памяти родительского процесса, запуск новой программы оказывается безумно дорогой операцией.