ВУЗ:
Составители:
70
разделяемыми ресурсами через стандартные скрипты shell. Синтаксис командной
строки:
Создание множества семафоров semtool c (количество семафоров в множестве)
Запирание семафора semtool l (номер семафора для запирания)
Отпирание семафора semtool u (номер семафора для отпирания)
Изменение прав доступа (mode) semtool m (mode)
Удаление множества семафоров semtool d
Примеры использования semtool:
semtool c 5
semtool l
semtool u
semtool m 660
semtool d
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#define SEM_RESOURCE_MAX 1
/* Начальное значение для всех семафоров */
void opensem(int *sid, key_t key);
void createsem(int *sid, key_t key, int members);
void locksem(int sid, int member);
void unlocksem(int sid, int member);
void removesem(int sid);
unsigned short get_member_count(int sid);
int getval(int sid, int member);
void dispval(int sid, int member);
void changemode(int sid, char *mode);
void usage(void);
int main(int argc, char *argv[])
{
key_t key;
int semset_id;
if(argc ==1)
usage();
/* Создаем особый ключ через вызов ftok() */
key = ftok(".", 's');
switch(tolower(argv[1][0]))
{
case 'c': if(argc != 3)
usage();
createsem(&semset_id, key, atoi(argv[2]));
break;
case 'l': if(argc != 3)
usage();
opensem(&semset_id, key);
locksem(semset_id, atoi(argv[2]));
break;
case 'u': if(argc != 3)
usage();
opensem(&semset_id, key);
unlocksem(semset_id, atoi(argv[2]));
break;
разделяемыми ресурсами через стандартные скрипты shell. Синтаксис командной строки: Создание множества семафоров semtool c (количество семафоров в множестве) Запирание семафора semtool l (номер семафора для запирания) Отпирание семафора semtool u (номер семафора для отпирания) Изменение прав доступа (mode) semtool m (mode) Удаление множества семафоров semtool d Примеры использования semtool: semtool c 5 semtool l semtool u semtool m 660 semtool d #include#include #include #include #include #include #define SEM_RESOURCE_MAX 1 /* Начальное значение для всех семафоров */ void opensem(int *sid, key_t key); void createsem(int *sid, key_t key, int members); void locksem(int sid, int member); void unlocksem(int sid, int member); void removesem(int sid); unsigned short get_member_count(int sid); int getval(int sid, int member); void dispval(int sid, int member); void changemode(int sid, char *mode); void usage(void); int main(int argc, char *argv[]) { key_t key; int semset_id; if(argc ==1) usage(); /* Создаем особый ключ через вызов ftok() */ key = ftok(".", 's'); switch(tolower(argv[1][0])) { case 'c': if(argc != 3) usage(); createsem(&semset_id, key, atoi(argv[2])); break; case 'l': if(argc != 3) usage(); opensem(&semset_id, key); locksem(semset_id, atoi(argv[2])); break; case 'u': if(argc != 3) usage(); opensem(&semset_id, key); unlocksem(semset_id, atoi(argv[2])); break; 70
Страницы
- « первая
- ‹ предыдущая
- …
- 68
- 69
- 70
- 71
- 72
- …
- следующая ›
- последняя »