Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2018, 11:56   #11
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Что это за бред? Вы свой код хоть читаете? И посты за одно?
1. Зачем вы логику работы с процессами пихаете в функцию для задачи, которую выполняет поток?
2. Где вызов reverseFile в моем посте? Разве до создания потока?
3.
Код:
exit(-1);;
убьем поток просто так... а, он еще и делать что-то должен был?
4.
Код:
while ((pid = fork()) >= 0)
еще раз читайте описание функции. В каком случае pid > 0 будет? Зачем вам кучу раз один и тот же файл реверсить?

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

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

Ужс )). Если первоначальный код рабочий, то распараллеливать перед реверсом нужно (или на строчку выше).
Соответственно, например, меняем reverseFile(ib->path(), pd2); на
Код:
pid = fork(); 
if (pid == 0) {//если потомок
  reverseFile(ib->path(), pd2); //реверсируем файл
  exit(0);//завершаем работу или убиваем себя любым способом
}
Для учебной задачи этого достаточно.

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль: Помогите понять основу для написания простейшей программы. Не могу понять суть. romanya Паскаль, Turbo Pascal, PascalABC.NET 2 18.03.2016 20: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