![]() |
|
Модераторы: xvr |
![]()
|
|
| awake |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 15.4.2012 Репутация: нет Всего: нет |
Дали задание используя системный вызов fork() и pipe. Решить какую-то задачу.
Я решил сделать "сортировку пузырьком". Вот код
А как теперь этот код передалать используя fork() и pipe. Если я правильно понял задание то нужно создать процесс(потомок) , используя fork(), затем отсортировать сроку и записать её в канал(write), а затем сам результат прочитать в Родителе(read). Я вот немного не пойму в где производить саму сортировку. в Потомке или в Родителе? и как правильно всё туда записать? |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
||||
|
||||
| sergioK1 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
ну как то так
хотя на компе не проверял , лины нет под рукой xvr Не понял ваш пост Какая разница какой алгоритм потомок юзает ?, главное что результат был в трубе, и папа его вытащит Это сообщение отредактировал(а) sergioK1 - 14.5.2012, 21:02 |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
||||
|
||||
| awake |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 15.4.2012 Репутация: нет Всего: нет |
Да вы правы мне действительно нужна параллельная сортировка.И "пузырёк" не подходит. По вашему совету думаю взять "быструю сортировку". Как я понял часть сортировки нужно реализовать в потомке, а затем через трубу отправить результат для дальнейшей сортировки в родителе. Или сортировку реализовать в 2 потомках а затем результаты их сортировки отправить через трубу родителю. А как правильно это сделать? Не могли бы вы привести пример. |
|||
|
||||
| sergioK1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 417 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
это логичнее IMHO. каждый процесс занимаеться своей задачей, в реальных системах - один програмист "сортирует", другой "соединяет " |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Быстрая сортировка вещь рекурсивная и в принципе паралельная. Сначала пробегаете массив и ищите середину (с обменом байтов). Потом делаете fork, и в новом процессе запускаете себя рекурсивно на 1ю часть массива, а в родителе продолжаете со 2й частью. По окончанию новый процесс отправляет родителю свою отсортированную часть через pipe, а родитель ждет ее, присоединяет 2ю часть массива и завершается (или отправляет через pipe то, что получилось своему родителю) PS. pipe можно использовать для всех процессов один |
|||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под Unix/Linux" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |