Перейти к содержанию

Программирование с семафорами


Рекомендуемые сообщения

Привожу кусок кода:

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.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...