Книга: UNIX: взаимодействие процессов

Программа semwait

Программа semwait

Программа в листинге 10.6 открывает именованный семафор, вызывает semwait (которая приостанавливает выполнение процесса, если значение семафора меньше либо равно 0, а при положительном значении семафора уменьшает его на 1), получает и выводит значение семафора, а затем останавливает свою работу навсегда при вызове pause.

Листинг 10.6. Ожидание изменения значения семафора и вывод нового значения

//pxsem/semwait.c
1  #include "unpipc.h"
2  int
3  main(int argc, char **argv)
4  {
5   sem_t *sem;
6   int val;
7   if (argc != 2)
8    err_quit("usage: semwait <name>");
9   sem = Sem_open(argv[1], 0);
10  Sem_wait(sem);
11  Sem_getvalue(sem, &val);
12  printf("pid %ld has semaphore, value = %dn", (long) getpid(), val);
13  pause(); /* блокируется, пока не будет удален */
14  exit(0);
15 }

Оглавление книги


Генерация: 0.425. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз