Следующий код читает сообщения от других процессов через канал.Все процессы правильно распечатывают все сообщения, но тогда они никогда не пройдут цикл while.Попробовав отладку в Eclipse, после прочтения чтения всех сообщений он просто остановится на цикле while.
Индекс - это номер, назначенный каждому процессу.Первый процесс будет иметь индекс == 0. Само сообщение является просто индексом процесса, отправляющего сообщение.
while((n = read(fd[index][0], &mymsg, sizeof(int))) == sizeof(int))
printf("process%d has received a message from process%d\n", index, mymsg);
Любые идеи, почему это произойдет?
Вот как каждыйпроцесс пишет другому:
// Write to other process
if(write(fd[index2][1], &index, sizeof(int)) != sizeof(int))
sys_error(2);
Это делается пять раз.fd - таблица конца операций чтения и записи для каждого процесса.