Я пытаюсь смоделировать распределенное взаимное исключение Лампорта для 3 процессов. P1 и P2 запрашивают критические секции и поэтому отправляют сообщения запроса другим двум процессам. Проблема в том, что я могу получить ответные сообщения от P2 и P1, но не могу получить ответные сообщения от P3. Программа остается в бесконечном цикле. Я сохранил важные части, связанные с моим кодом здесь. Пожалуйста, помогите мне в этом.
printf("P2 sends Request Message to P1\n");
f=fopen(fifo3,"a"); // send request to P3
fprintf(f,"%d %d\n",2,clock_val[1]);
fclose(f);
===================================================
void *func3(void* aa)
{
printf("STARTED P3\n");
FILE*f;
struct Message*msg;
struct Message list[100];
int list_index=0;
int reply[4]={0,0,0,0};
//
// NOW P3 will receive messages
// but we cannot be sure about the number so we make it a infinite loop
//
int line=1,option;
// line :- last line number which has been read in FIFO
while(1)
{
//printf("hell");
//printf("%d",message_read(fifo3,line));
if((msg=message_read(fifo3,line))!=NULL) // If Message is fetched