Используйте getmypid()
, чтобы получить педи в детях. Вызов fork возвращает 0 в дочерних процессах:
for($i = 0; $i < 3; $i++) {
$pid = pcntl_fork();
if ($pid == -1) {
die("Fork failed on loop #$i");
} else if ($pid == 0) {
$mypid = getmypid(); // executes in the children
exec(... whatever this child has to run ...);
} else {
... executes in the parent
}
}
Обратите внимание, что это в PHP, но базовая механика остается неизменной практически во всех языках, использующих fork ().
Followup:
...
} else if ($pid == 0) {
$mypid = getmypid();
switch ($i) {
case 0:
exec(... app #1 ...)
case 1:
exec(... app #2 ...)
case 2:
exec(... app #3 ...)
}
} ...
Так вы бы запустили свои 3 приложения. В тот момент, когда родительский скрипт вызывает fork (), у каждого дочернего элемента будет свой $ i, поэтому вы можете определить, в каком дочернем элементе вы находитесь по значению $ i.