Синхронизация родителя и ребенка в бесконечном цикле - PullRequest
0 голосов
/ 04 апреля 2020

Моя цель из кода заключается в следующем:
-Создайте случайное число между заданным диапазоном
-Заставьте пользователя угадать число, используя дочерний процесс
-Заставьте родителя сказать пользователю, если угадать следует быть выше / ниже
-Если догадка верна, дать ребенку сигнал на выход.

Текущий код:

int main() {

int randomnumber = 1+ rand() % 51;
int guess;
pid_t pid=fork();
bool signal=false;

if(pid<0){
    printf("Fork failed");
}

if(pid==0){
printf("Enter your guess: \n");
}

while(1)
{

if(pid==0){
    if(signal==true)
        exit(0);
scanf("%d", &guess);
}

print("test1"); //put this for debugging purposes and only executed once instead of twice


    if(pid>0){
      print("test2"); //this doesn't execute so I can conclude that parent isn't executing for some reason
      wait(NULL);//before adding this parent used to execute and I got an infinite amount of prints which is normal, adding it made the parent not execute

    if(guess>randomnumber){
        printf("Guess should be lower");
    }

    if(guess<randomnumber){
        printf("Guess should be higher");
    }

    if(guess==randomnumber){
        printf("WIN");
        signal=true;
        break;
    }
}
}
return 1;
}

Есть идеи, что я могу сделать, чтобы синхронизировать их обоих? Почему родительский элемент не выполняется после добавления функции ожидания, он должен по крайней мере выполнить родительский элемент перед ожиданием (NULL).

1 Ответ

0 голосов
/ 04 апреля 2020

Как некоторые пользователи отмечали в комментариях, это невозможно сделать, если я не реализую межпроцессное взаимодействие или разделяемую память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...