Мне нужно разработать программу, в которой у меня есть 10 дочерних процессов, каждый из которых обрабатывает часть массива, и всякий раз, когда в этой части обнаруживается число больше 20, процесс записывает его в процесс pather через канал.
До сих пор я придумал это, чтобы написать в канале:
for (i = 0; i < CHILDS; i++)
{
pids[i] = fork();
if (pids[i] == 0)
{
for (j = 5000 * i; j < (5000 * i) + 5000; j++)
{
if (array[j].quantity > 20)
{
write(fd[1], &array[j].product_code, sizeof(array[j].product_code));
}
}
exit(0);
}
}
Как я могу бесконечно читать из этого канала в родительском процессе и всякий раз, когда он читает что-то, записывать его на массив?
Я пробовал это, но не работает:
while ((p_code = read(fd[0], &p_code, sizeof(p_code))) > 0)
{
products[i] = p_code;
i++;
}
Спасибо: D