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

Передача чисел через семафоры

20.05.2013, 23:42. Показов 2535. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ подскажите как реализовать передачу чисел между двумя программами через семафоры. Что-то никак не могу разобраться.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2013, 23:42
Ответы с готовыми решениями:

Семафоры,передача четных pid от одного процесса другому,2ой должен просуммировать пиды и вывести сумму
Желтый должен передать при помощи семафоров оранжевому четные пиды ,оранжевый суммирует их и выводит на экран. p.s. приведу ниже коды...

Внешняя процедура, выполняющая сложение двух чисел (передача параметров через стек)
Помогите, пожалуйста!!!! Написать прорамму с внешней процедурой, выполняющую сложение 2 чисел с передачей параметров процедуры через стэк.

Передача массива через POST и подгрузка файла через AJAX
Доброго времени суток. Задача такого : есть элемент select в котором можно выбрать несколько вариантов. Далее по нажатию на кнопку, должен...

7
1267 / 980 / 385
Регистрация: 02.09.2012
Сообщений: 3,027
21.05.2013, 23:05
Например, через общую память. см. man shmget
Оба процесса получают дескриптор на общий сегмент памяти, один туда пишет, второй читает. Синхронизация их действий осуществляется через семафор.
0
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
24.05.2013, 01:27
при создании семафора дать ему первоначальное значение равное твоему числу, другой процесс откроет этот семафор, и получит значение через системный вызов, sem_getvalue().

Не по теме:

видать курсач по CПО делаешь?

0
 Аватар для HERETIC
95 / 96 / 13
Регистрация: 10.10.2008
Сообщений: 606
24.05.2013, 01:31  [ТС]
А если проги должны обмениваться числами поочередно?
0
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
24.05.2013, 01:40
друг другу передавать?
0
 Аватар для HERETIC
95 / 96 / 13
Регистрация: 10.10.2008
Сообщений: 606
24.05.2013, 01:44  [ТС]
имено так. А если точнее, то :
Процессы строят чєсла Фєбоначчє, поочередно вычєсляя очередное
чєсло, выводя его на экран є передавая его другому процессу, чтобы тот вычєслєл следующее.
Внимание: никаких средств взаимодействия (файлов, pipe, ...), кроме семафоров и мьютексов,
не использовать!
0
Автор FAQ
 Аватар для Чистый
2733 / 1429 / 89
Регистрация: 08.09.2011
Сообщений: 3,746
Записей в блоге: 1
24.05.2013, 01:47
два семафора, один в одну сторону другой в другую, суть в том что семафоры немного не для того созданы и автор задания немного извращается, как следствие вам тоже придется извратится...
0
 Аватар для HERETIC
95 / 96 / 13
Регистрация: 10.10.2008
Сообщений: 606
24.05.2013, 23:53  [ТС]
То что он над студентами издевается = это точно. А вот как это реализовать никак понять не могу. Если есть возможность, то помогите кто чем может

Добавлено через 12 часов 9 минут
Я вот подумал, а что если задействовать 4 параметр sem_open и sem_getvalue. Наверно должно плучиться.

Добавлено через 9 часов 43 минуты
Набрасал вот такую прожку1:
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
#include <unistd.h>
#include <semaphore.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <stdio.h>
 
int Fib(int k)
{
    if (k == 0) return 0;
    if (k == 1) return 1;
    return Fib(k-1) + Fib(k-2); 
}
 
int main()
{
    int mas[25], i;
    for (i = 0; i < 24; i++)
        mas[i] = Fib(i);
    
    char sem_name1[] = "mysemaphore1";
    char sem_name2[] = "mysemaphore2";
        int k1, k2;
        sem_t *s_temp = sem_open(sem_name1, O_CREAT, 0777, mas[0]);
    sem_t *s2 = sem_open(sem_name2, O_CREAT, 0777, 1);
    sem_getvalue(s2, &k2);
        sem_getvalue(s_temp, &k1);
    sem_unlink(sem_name1);
    printf("%i\n", k1);
 
    while (k2 != 0){
        for (i = 0; i < 24; i++){
            if (mas[i] == k)
                break;      
        }
        sem_t *s1 = sem_open(sem_name1, O_CREAT, 0777, mas[i + 1]);
        sem_getvalue(s1, &k1);
        printf("%i\n", k1);
        }
    exit (0);
}
А сейчас не могу понять как реализовать вторую прогу для обмена числами. Числа передаются через первый семафор, а второй должен использоваться для синхронизации.
Помогите правильно зациклить прогу и реализовать вторую. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.05.2013, 23:53
Помогаю со студенческими работами здесь

Запрос БД через PHP и передача содержимого через json_encode
Всем здравствуйте, нужно вывести из БД данные, которые захочет увидеть сам пользователь, через &lt;form&gt; и &lt;select&gt;. Считываю...

Семафоры
Здравствуйте Задача: разработать комплекс программ, который демонстрирует решения по-дачи «читатели-писатели». В комплекс должны входить:...

Семафоры
Добрый вечер!:) У меня есть семафор и несколько потоков. Один и тот же семафор используется в каждом потоке. Семафор у меня объявлен...

Семафоры
Есть программа с разделением на потоки. Программа подсчитывает количество буквенных сочетаний в тексте. Сколько бы потоков не...

семафоры
Привести пример программной реализации семафорных примитивов. Использовать семафоры для синхронизации процессов, один из которых в процессе...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru