![]() |
|
Модераторы: xvr |
![]()
|
|
| redwhite90 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 14.7.2011 Репутация: нет Всего: нет |
написал программу для поиска файлов по заданной маске в заданной директории.
программа работает в папках /usr/ /home/ а в / и многих других директориях этой папки не ищет. возникает segmentation failed проблема с правами доступа? Добавлено через 4 минуты и 8 секунд
Добавлено через 6 минут и 26 секунд и даже при поиске *.* в папке /usr/ возникает segmentation fault |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
запусти программу под отладчиком - он встанет на строку, вызвавшую сегфолт. Посмотришь переменные всех потоков. Возможно, race condition или выход за пределы.
|
|||
|
||||
| redwhite90 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 14.7.2011 Репутация: нет Всего: нет |
вылетает на строчке
в файле stl_construct.h |
|||
|
||||
| redwhite90 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 14.7.2011 Репутация: нет Всего: нет |
это значит, что память не получилось выделить?
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
почему тут trylock? почему мьютекс глобальный? а это почему глобальное? покажи строку целиком. и номер и версию компилятора. |
|||
|
||||
| redwhite90 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 14.7.2011 Репутация: нет Всего: нет |
так как read_file работает в 3 потока и все они записывают в одну структуру. про глобальный мьютекс даже не знаю. Его лучше в Thread объявить?
мьютекс обязательно надо было использовать. А если сделать всё локальное, то его существование не несёт никакого смысла. Добавлено через 10 минут и 20 секунд
так он и летит оказывается в разных местах сейчас тут вот вылетел. ide code::blockes 10.05 а сейчас тут: /
|
||||||
|
|||||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: нет Всего: 19 |
А зачем вообще разделять программу на несколько потоков? Даже в один поток она упрется в скорость чтения с диска... Или нет?
-------------------- You're face to face With man who sold the world |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
||||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
||||
|
||||
| boostcoder |
|
||||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
наверное ты меня не правильно понял.. смотри:
идея понятна? зы код не проверял. Добавлено @ 10:51 Up. к тому же, ты пишешь на С++. это может сильно "очеловечить" код. Это сообщение отредактировал(а) boostcoder - 16.12.2011, 10:52 |
||||||||
|
|||||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
еще - ты не проверяешь коды завершения функций. это может сильно все усложнить.
|
|||
|
||||
| redwhite90 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 14.7.2011 Репутация: нет Всего: нет |
boostcoder,
я попробую попозже так, но не думаю, что дело в этом.Ведь имеется ввиду, чтобы мьютекс поглубже поставить - только на добавление в глобальную структуру ?
именно
а что я там могу увидеть? я просто не знаю, что там хранится обычно Это сообщение отредактировал(а) redwhite90 - 16.12.2011, 19:09 |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
||||
|
||||
| svlary |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 207 Регистрация: 8.9.2009 Репутация: 4 Всего: 4 |
Раз уж речь идет о сопоставлении с образцом, то (наверное) было бы разумно использовать стандартные POSIX функции
|
|||
|
||||
| redwhite90 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 14.7.2011 Репутация: нет Всего: нет |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 16 Всего: 110 |
то, что доступ к переменным directories и files может происходить абсолютно из любого участка кода в этой единице трансляции. сходу не скажешь... но я бы в любом случае переписал, ибо твой код нечитаем %) |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
||||
|
||||
![]()
|
| Правила форума "С/С++: Программирование под 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. |