Я хотел бы создать программу, которая имеет несколько чисел на входе, и каждое число (разделенное пробелом) должно обрабатываться в 4 различных процессах, чтобы увидеть, является ли это простое число. В этом случае необходимо добавить счетчик (поэтому я думаю, что у ребенка должна быть общая память).
Как только мой процесс завершается с одним номером, он получает другой, который не обрабатывается другим процессом. Идея в том, чтобы они работали почти параллельно.
Я собираюсь отделить строку от токенов и отправить ее дочернему процессу.
Вот что я сделал до сих пор:
unsigned int i = 0;
int processes = 4;
char *s=malloc(sizeof(char)*100);
fgets (s, 100, stdin);
for (i = 0; i < processes; ++i) {
if (fork() == 0) {
printf("Process %d:", i);
make_token(s);
treat_number(token);
exit(0);
}
}
// wait all child processes
int status;
for (i = 0; i < processes; ++i)
wait(&status);
return 0;
Но после этого моя программа заканчивается после завершения процесса 4, и они не работают точно параллельно.
Так как я могу заставить его обрабатывать несколько чисел в 4 процессах почти одновременно, каждый из которых получает разные числа, пока не закончится моя строка?
Пример ввода / вывода будет:
Input: 0 10 100000000 100007701 100015739 3 5
Output: 4