Процессы Unix имеют независимые адресные пространства.Это означает, что память в одном полностью отделена от памяти в другом.Когда вы вызываете fork (), вы получаете новую копию процесса.Сразу после возврата из fork () единственное, что отличается между двумя процессами, это возвращаемое значение fork ().Все данные в двух процессах одинаковы, но они являются копиями.Обновление памяти в одном не может быть известно другому, если вы не предпримете шаги для совместного использования памяти.
Существует множество вариантов межпроцессного взаимодействия (IPC) в Unix, включая общую память, семафоры, каналы (именованные и неназванные).), сокеты, очереди сообщений и сигналы.Если вы поищете в Google эти вещи, вы найдете много для чтения.
В вашем конкретном случае, пытаясь заставить несколько процессов ждать, пока все они достигнут определенной точки, я мог бы использовать семафор или разделяемую память, в зависимости от того,это какой-то главный процесс, который запустил их все или нет.
Если есть главный процесс, который запускает другие, то мастер может настроить семафор со счетчиком, равным количеству процессов для синхронизации, а затем запустить их,Затем каждый дочерний элемент может уменьшать значение семафора и ждать, пока значение семафора не достигнет нуля.
Если нет мастер-процесса, я мог бы создать сегмент общей памяти, который содержит число процессов и флаг для каждого из них.процесс.Но когда у вас есть два или более процессов, использующих разделяемую память, вам также понадобится какой-то механизм блокировки (возможно, снова семафор), чтобы два процесса не пытались обновить разделяемую память одновременно.
Сохранить вИмейте в виду, что чтение канала, в который никто не пишет, заблокирует читателя до появления данных.Я не знаю, что делают ваши процессы, но, может быть, этого достаточно для синхронизации?Еще одна вещь, которую следует учитывать, если у вас есть несколько процессов, выполняющих запись в данный канал, их данные могут чередоваться, если записи превышают PIPE_BUF.Значение и расположение этого макроса зависят от системы.
-Kevin