Моя программа запускает дочерние процессы с fork, чтобы запросить родительский процесс о времени UNIX. Я сделал функцию с общей памятью для записи тиков (UNIX-Time) и номера клиента в struct Array с MAXENTRIES индексов.
Я не могу понять, почему значения, переданные в функцию f_timeLog (int, int), не отображаются в массиве.
Если я печатаю с
printf("From: %d\tTICKS: %d\n", logSM[*counter]->vonWem, logSM[*counter]->ticks);
Значения говорят всегда: 0.
Если я отлаживаю программу, она записывает первое значение logSM [0] правильно, но далее нет.
Спасибо за помощь!
typedef struct
{
int vonWem;
int ticks;
}timeLog [MAXENTRIES];
void f_timeLog(int who, int ticks)
{
int *counter;
timeLog *logSM;
logSM = (timeLog*) shmat(TimeLog, NULL, (SHM_R|SHM_W));
counter = (int*) shmat(IDCounter, NULL, (SHM_R|SHM_W));
P(SemWriteLog);
logSM[*counter]->vonWem = who;
logSM[*counter]->ticks = ticks;
*counter= *counter+1;
if(*counter >= MAXENTRIES) *counter= *counter - MAXENTRIES;
V(SemWriteLog);
}
Вывод: logSM [0] vonWem = X, ticks = xxxxxxxx
и logSM [1] и далее: vonWem = 0, ticks = 0;