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