Привожу кусок кода:
int i, shmId1, semId1;
unsigned short int ray[2] = {0,0};
union semun
{
int val;
struct semid_ds*buf;
unsigned short int *array;
struct seminfo*_buf;
}ar;
shmId1 = shmget(11,200,IPC_CREAT|0666);
if(shmId1 == -1)
printf("Creator: Shared memory 1 not created\n");
else
printf("Creator: Shared memory 1 created\n");
semId1 = semget(98,1,IPC_CREAT|0666);
if(semId1 == -1)
printf("Creator: Semafors not created\n");
else
printf("Creator: Semafors created\n");
ar.array = ray;
i = semctl(semId1,1,SETALL,ar.array);
if(i == -1)
{
printf("Creator: Semafors not installed!\n");
exit(-1);
}
else
printf("Creator: Semafors installed in BLOCK option\n");
printf("%d \n",semctl(semId1,0,GETVAL,0));
printf("%d \n",semctl(semId1,1,GETVAL,0));
}
//-------------------------------------------------------
В конце программы я запрашиваю значения каждого семафора в наборе и программа выводит 0 и -1. Почему так? Ведь должно быть 0 и 0.