|
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
|
||||||||||||||||
С++ под Linux, процессы fork() и каналы30.05.2013, 09:31. Показов 5208. Ответов 21
Метки нет (Все метки)
Вот такая штука... Нужно, так сказать, организовать общение между процессами через полудуплексный неименованный канал =)
Научился передавать между процессами одно чилсо... Но не получается передать массив =( Вот что делаю, когда передаю одно число:
0
|
||||||||||||||||
| 30.05.2013, 09:31 | |
|
Ответы с готовыми решениями:
21
Fork() процессы
Процессы и каналы |
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||||||
| 30.05.2013, 09:53 | ||||||
|
Во write как минимум.
1
|
||||||
|
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
|
||||||||||||
| 30.05.2013, 11:04 [ТС] | ||||||||||||
0
|
||||||||||||
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||||||
| 30.05.2013, 11:07 | ||||||
1
|
||||||
|
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
|
|||||||||||||||||
| 30.05.2013, 14:05 [ТС] | |||||||||||||||||
|
А вот второе я не знаю... Я хотел записать в fd[1] информацию и из fd[0] потом ее считывать, &С это, как я пологаю, указатель на начала моего массива и sizeof(C) это размер, который я буду записывать... Что не так? =) ну а считываю я так:
Вот еще такой вопрос... Почему в функции:
0
|
|||||||||||||||||
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
| 30.05.2013, 14:11 | |
|
О да Вы оказывается не знаете примитивов, а взялись за пайпы. Разговор бессмысленен пока вы не прочитаете что такое:
1. Переменная. 2. Указатель. 3. Массив. 4. Функция. 5. Передача переменных/массивов в функцию (по значению, указателю, ссылке)
1
|
|
|
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
|
||
| 30.05.2013, 14:16 [ТС] | ||
|
Что именно я не так сделал в коде? =)
0
|
||
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
| 30.05.2013, 14:25 | |
|
Почитайте, это долго расписывать. Тем более без данных примитивов вы вряд ли сможете что-то разработать дальше.
1
|
|
|
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
|
||
| 30.05.2013, 14:58 [ТС] | ||
|
Добавлено через 5 минут Если я хочу сделать указатель на массив array я буду делать так: //опустим выделение памяти и тп. int *ptr; ptr = array; или ptr = &array[0]; Я же тоже самое делаю... В функции есть массив С, его я возвращаю и в main у меня есть указатель *C и собственно C=input_C_elements(c,A,B,amount); это тоже самое что и ptr = array;.... что не так? =)
0
|
||
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||||||
| 30.05.2013, 15:16 | ||||||
|
1. то что функция input_C_elements, возвращает указатель. В Вашем случае указатель на первый элемент массива.
А функция write принимает указатель на область данных. Это то что Вы написали.
Запиши данные в файловый дискриптор fd[1] из переменной С размером с переменную С. Так вот переменная С это УКАЗАТЕЛЬ и &c это взятие адреса указателя, а sizeof(C) это sizeof(void*) 2. Функция input_C_elements принимает ПО ЗНАЧЕНИЮ amount. Советую все таки прочитать, то что я написал.
1
|
||||||
|
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
|
|
| 30.05.2013, 16:41 [ТС] | |
|
Блин.... Ну нифига не выходит...
0
|
|
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||||||
| 30.05.2013, 17:49 | ||||||
1
|
||||||
|
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
|
||||||
| 30.05.2013, 20:17 [ТС] | ||||||
|
Но я так и записываю в канал... но ничего не пишется:
0
|
||||||
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
| 30.05.2013, 22:12 | |
|
1
|
|
|
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
|
|
| 31.05.2013, 06:36 [ТС] | |
|
0
|
|
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
| 31.05.2013, 12:26 | |
|
Хватит кадра стека. Да поможет.
1
|
|
|
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
|
||||||
| 31.05.2013, 12:35 [ТС] | ||||||
|
Вот такая штука в общем... Вот код:
Сформировать массив, элементами которого являются целые числа больше А, меньше В и не равные С1, С2, ... Сn. Найти среднее арифметическое элементов полученного массива. Входные данные: число А, число Б, произвольное количество чисел С1, С2, ... Сn. Использовать не менее четырех процессов для решения задачи. Сегодня общался с преподователем, она сказала, что не знает почему у меня не пишется или не читается и посоветовала писать в канал поэлементно, этим я и займусь, НО я очень хочу разобраться, почему с массивом такая у меня проблема...
0
|
||||||
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
||
| 31.05.2013, 13:01 | ||
|
Уточняющий вопрос. Использовать потоки или процессы? Дело в том что это разные вещи, с точки зрения программирования в общем, просто linux имеет свое мнение и релизацию данных вещей. Какая цель "не менее четырех процессов для"? Распараллелить задачу? Или Именно научиться использовать IPC (межпроцессорное взаимодействие)? Добавлено через 19 минут п.с. И определитесь на каком языке Вы пишите. Си или С++
1
|
||
|
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
|
||
| 31.05.2013, 14:20 [ТС] | ||
|
А на счет потоков или процессов... Я понял задачу так... Есть программа, к примеру как моя, написанная на СИ/С++ и всю программу будет выполнять родительский процесс, но я разбиваю программу на 4 fork(), таким образом имею дочерние процессы (выполнил условие "не менее четырех процессов для"). Но, так как, по завершению дочернего процесса, другой начавшийся дочерний процесс или даже тот же родительский процесс не будут знать о том, что произошло в выполнившемся дочернем процессе... Я имею ввиду вот что... Если я в родительском процессе создам переменную m и скажу что она равно нулю, а затем в дочернем процессе присвою переменной m значение 5, то по окончанию дочернего процесса, в родительском переменная m останется быть равна 0... Поэтому нужны каналы, чтоб сообщить о изменениях и тп. Я правильно рассуждаю? =)
0
|
||
|
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
|
|
| 31.05.2013, 17:00 | |
|
Нет вы не поняли. В Linux подобных OS потоки реализованы через процессы. И запуск 4 потоков, это запуск 4 процессов.
В программировании под процессом понимают выполнение программы с использованием отдельной выделенной области памяти. В то время как поток может использовать ту же память что и породивший его процесс. Как-то так. Так вот какая академическая задача стоит? Научиться использовать межпроцессорное взаимодействие или уметь распаралеливать задачу?
1
|
|
| 31.05.2013, 17:00 | |
|
Помогаю со студенческими работами здесь
20
Процессы и именованные каналы Принцип работы отладчика в Linux и fork() Клиент-сервер TCP для Linux с fork Именованные каналы в Linux Linux pipes(каналы) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|