Я сделал это за 10 минут и провел 2 часа, пытаясь понять, почему он ничего не сделает на терминале и, наконец, отказался и нуждался в помощи. Было бы очень приятно, если бы кто-нибудь мог помочь. Благодарю.алгоритм спящего парикмахера - код не исполняется
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
int main (int argc, char const *argv[])
{
int waitingRoomCust = 0;
srand(time(NULL));
int barber = fork();
printf("%d\n",barber);
if (barber==0) {
while(1) {
if(waitingRoomCust > 0) {
waitingRoomCust--;
sleep((rand() % 12));
printf("Customer has been given a haircut.");
}
}
}
if(barber!=0) {
while(1) {
if(waitingRoomCust <= 3) {
waitingRoomCust++;
printf("The waiting room has now %i customers.", waitingRoomCust);
}
else {
printf("Waiting room is full, customer has left.");
}
}
}
return 0;
}
Время учиться использовать отладчик. – simonzack
Нет вывода вообще? –
Как вы общаетесь между родительским процессом и дочерним процессом? Использование 'fork()' создает процесс, а не поток. Переменные и память не разделяются между процессами. – SSC