Так что я хочу, чтобы порождать ряд дочерних процессов, равных значению, введенному из командной строки. У меня есть все ценности и все, что читается в порядке, мне просто нужно выяснить, как порождать этих детей, и чтобы все они называли одну и ту же программу.Спасти несколько дочерних процессов
Вот то, что я до сих пор:
for(int i = 0; i < processes; i++)
{
pid = fork();
printf("%d\n", pid);
}
if(pid < 0)
{
perror("fork");
exit(-1);
}
else if(pid == 0)
{
/*for(int j = 0; j <= 5; j++)
{
execl("~/cs370/PA2/gambler.c","run", NULL);
Gamble(percent);
}*/
}
Так быть ясно снова. Я хочу, чтобы спал "processes"
количество детей, что все звонят "gambler.c"
. Но ТОЛЬКО 5 может работать одновременно. Он должен wait()
, а затем обрабатывать остальных детей по 5 за раз.
Ввод пробы:
run -p 60 10
Где -p представляет собой процент, подаваемого в gambler.c, который просто возвращает успех или неудачу на основе генератора случайных чисел. 60
- процент. 10
- количество процессов.
Любая помощь очень благодарна спасибо!
При использовании EXEC, мне нужно, чтобы установить 'PID = вилка()', как я сделал выше? Или exec автоматически создаст все эти процессы, которые мне нужны? – Necrode
Exec заменяет текущее пространство процесса. Так что вам все равно нужно развить. – mjr
Дух ... Я забыл XP. Хорошо. Поэтому я называю fork один раз, а не в цикле. Однако, если я вызову exec в цикле, он будет давать новые pids каждый раз? Или он будет спамить одно и то же «х» количество раз? – Necrode