Я работаю над проблемой, где я должен реализовать пример обеденного философского парадигмы. Примечание: Да, это домашнее задание, прежде чем кто-либо спросит.C `signal` имеет слишком мало аргументов
Я не прошу решения, хотя. Я смущен, потому что эта функция Philosopher
, которая была предоставлена ниже моим учителем, теоретически должна работать. wait
и signal
- это функция, используемая в системных вызовах C для ОС.
Я включил их с помощью:
/* Wait and Signal */
#include <signal.h>
#include <sys/wait.h>
struct semaphore
{
int count = 1;
struct PCB *Sem_Queue ;
};
struct semaphore Forks[5];
Philosopher()
{
i = getPID() ;
while (1)
{
think();
wait (Forks[i]);
wait (Forks[(i+1) % 5]);
eat();
signal (Forks[i]);
signal (Forks[(i + 1) % 5]);
}
}
Однако при компиляции я получаю ошибку:
Main.c:38:19: error: too few arguments to function call, expected 2, have 1
signal (Forks[i]);
Философ должен быть объявлен правильно с данными типа возврата –
Вы пытались прочитать руководство по функциям, которые вы пытаетесь использовать? Это помогает в большинстве случаев, подобных этому. –
Я попытался добавить к функции функцию 'void', но все равно получаю те же ошибки. – Nic