Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Операционные системы > Linux (Ubuntu, Debian, Red Hat, CentOS, Mint)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 18.05.2018, 12:56   #11
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 11,049
Репутация: 1862

icq: 216409213
По умолчанию

Что это за бред? Вы свой код хоть читаете? И посты за одно?
1. Зачем вы логику работы с процессами пихаете в функцию для задачи, которую выполняет поток?
2. Где вызов reverseFile в моем посте? Разве до создания потока?
3.
Код:

exit(-1);;

убьем поток просто так... а, он еще и делать что-то должен был?
4.
Код:

while ((pid = fork()) >= 0)

еще раз читайте описание функции. В каком случае pid > 0 будет? Зачем вам кучу раз один и тот же файл реверсить?

Цитата:
Сообщение от Alexis_777 Посмотреть сообщение
Поставить метку на цикл ... чтобы туда перескакивало?
Вы о чем? Куда и что должно перескакивать? У вас проблемы с простейшей логикой? Вы шнурки сами умеете завязать? Вот у вас цикл: взять файл, запустить реверс, повторить. Повторю: куда и что должно перескакивать?
__________________
Запомните раз и навсегда: помочь != "решите за меня"!

Последний раз редактировалось p51x; 18.05.2018 в 12:59.
p51x на форуме   Ответить с цитированием
Старый 18.05.2018, 13:31   #12
eoln
Профессионал
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,668
Репутация: 2215

icq: 421277094
По умолчанию

Ужс )). Если первоначальный код рабочий, то распараллеливать перед реверсом нужно (или на строчку выше).
Соответственно, например, меняем reverseFile(ib->path(), pd2); на
Код:

pid = fork(); 
if (pid == 0) {//если потомок
  reverseFile(ib->path(), pd2); //реверсируем файл
  exit(0);//завершаем работу или убиваем себя любым способом
}

Для учебной задачи этого достаточно.

Если файлов мало, то зомби можно не бояться. А если много, то нужно боятся ещё и слишком большого количества не отработавших потомков, т.к. реверс файла долгий процесс по сравнению со сменой итерации. Но ставить wait сразу не нужно, а то параллельности не будет, родитель просто будет ждать завершения. Семафоры бы туда ), ну или счётчик форков и вейтов.
eoln вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль: Помогите понять основу для написания простейшей программы. Не могу понять суть. romanya Паскаль 2 18.03.2016 21:35
не могу понять Fantomka92 Общие вопросы C/C++ 4 27.11.2011 18:32
пайпы и процессы, Linux 5ive Общие вопросы C/C++ 2 27.08.2011 21:18
Не могу понять spaun88 Общие вопросы Delphi 0 15.04.2010 00:41
Не могу понять Superlotles Помощь студентам 8 31.08.2009 20:39


14:56.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru