подсчет процессов, сделанных с помощью вилки

Как подсчитать, сколько процессов я сделал с помощью fork? Некоторые из них сделаны внутри дочерних процессов, поэтому я не могу просто рассчитывать, когда я выхожу. Есть ли способ передать определенные переменные в стороне от статусов выхода?

1
nl ja de
stackoverflow .com/questions/9659501/& hellip; может вас заинтересовать
добавлено автор Krishnabhadra, источник
Какой-то счетчик в общей памяти или другой механизм IPC?
добавлено автор Some programmer dude, источник
это то, что я думал, но у меня также есть дочерние процессы в дочерних процессах, с которыми мой родитель будет слеп.
добавлено автор Julian, источник

2 ответы

вы можете использовать глобальную переменную самостоятельно, просто добавляя 1 после каждой развилки с условием

if((pid = fork()) >= 0)

с механизмом защиты переменной, например mutex .

0
добавлено
Не будет ли он поднимать механизм «Копировать на запись»?
добавлено автор Rerito, источник

На странице руководства для shm_open есть пример о том, как использовать общую память. Откройте объект общей памяти и карту памяти в каждом процессе, используйте его как указатель int и увеличьте его во всех процессах.

Чтобы помочь в условиях гонки, вы можете использовать семафоры POSIX .

0
добавлено