Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 17

Прогон примера с использованием семафора

14.11.2016, 20:00. Показов 2117. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не работает программа на терминале Linux. Подскажите)


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/* Программа 08-1a.c для иллюстрации работы с 
семафорами */ 
/* Эта программа получает доступ к одному системному семафору,
ждет, пока его значение не станет больше или равным 1 
после запусков программы 08-1b.c,а затем уменьшает его на 1*/ 
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <stdio.h>
int main()
{
    int semid; /* IPC дескриптор для массива IPC 
семафоров */
    char pathname[] = "08-1a.c"; /* Имя файла, 
        использующееся для генерации ключа. Файл с таким 
        именем должен существовать в текущей директории */
    key_t key; /* IPC ключ */ 
    struct sembuf mybuf; /* Структура для задания 
        операции над семафором */
    /* Генерируем IPC-ключ из имени файла 08-1a.c в текущей
    директории и номера экземпляра массива семафоров 0 */
    if((key = ftok(pathname,0)) < 0){
        printf("Can\'t generate key\n");
        exit(-1);
    }
    /* Пытаемся получить доступ по ключу к массиву 
семафоров, если он существует, или создать его из одного 
семафора, если его еще не существует, с правами доступа 
read & write для всех пользователей */ 
    if((semid = semget(key, 1, 0666 | IPC_CREAT)) < 0){
        printf("Can\'t get semid\n");
        exit(-1);
    }
    /* Выполним операцию D(semid1,1) для нашего массива 
    семафоров. Для этого сначала заполним нашу структуру. 
    Флаг, как обычно, полагаем равным 0. Наш массив семафоров 
    состоит из одного семафора с номером 0. Код операции -1.*/
    mybuf.sem_op = -1;
    mybuf.sem_flg = 0;
    mybuf.sem_num = 0;
    if(semop(semid, &mybuf, 1) < 0){
        printf("Can\'t wait for condition\n");
        exit(-1);
    }
    printf("Condition is present\n");
    return 0;
}
Добавлено через 38 секунд
выдает ошибки
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.11.2016, 20:00
Ответы с готовыми решениями:

Прогон программ с использованием разделяемой памяти
/* Мы организуем разделяемую память для массива из трех целых чисел. Первый элемент массива является счетчиком числа запусков программы...

Написать приложение (с использованием семафора), которое не дает закрыть любой exe файл, пока запущено
Написать приложение с использованием семафора, которое пока запущено не дает закрыть exe файл( любой). При попытке закрыть exe приложение...

Прогон программы с использованием системного вызова exec()
#include &lt;sys/types.h&gt; #include &lt;unistd.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main(int argc, char *argv,char *envp) { ...

3
 Аватар для qwarta
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
14.11.2016, 20:23
nikkii, а в вашей методичке есть такие строки:
Первая программа выполняет над семафором S операцию D(S,1) , вторая программа выполняет над тем же семафором операцию A(S,1) . Если семафора в системе не существует, любая программа создает его перед выполнением операции. Поскольку при создании семафор всегда инициируется 0, то программа 1 может работать без блокировки только после запуска программы 2. Наберите программы, сохраните под именами 08-1а.с и 08-1b.c cоответственно, откомпилируйте и проверьте правильность их поведения.
???
0
0 / 0 / 0
Регистрация: 14.11.2016
Сообщений: 17
14.11.2016, 20:45  [ТС]
qwarta, да, я так и делал, все равно не запускает программу
0
 Аватар для qwarta
73 / 73 / 11
Регистрация: 20.11.2009
Сообщений: 238
14.11.2016, 21:07
nikkii, т.е., создали в директории с программами файл "08-1a.c", запустили программу 2, она ответила "Condition is set", затем запустили программу 1 и она выдала ошибки? Если да, то какие?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.11.2016, 21:07
Помогаю со студенческими работами здесь

Решение примера с использованием ветвлений
1 X=\begin{cases}a*b+1 &amp; \text{ , } a \gt b \\ 25 &amp; \text{ , } a = b \\ \left(a-5 \right)/b &amp; \text{ , } a \lt b ...

Решение примера с использованием JavaScript
Как решить пример используя форму Пример y=x!/(2x)!+(x-1)! Помогите)

Проблемы с использованием примера от Smalig
Скачал пример 'Создание функции login на ASP-сайт при помощи БД и серверного компонента ' http://relib.com/code.asp?id=364 Во...

Решение математического примера с использованием класса
Нужно решить пример с помощью класса. В принципе, я всё написал, с ответом сходится полностью. Но, если честно, я делал многое наобум и не...

Написать программу для решения данного примера с использованием функции
Напишите пожалуйста программу на Турбо Паскале для решения этого задания: Вычислить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru