
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.03.2009, 17:57
|
|||
|---|---|---|---|
|
|||
Программирование под Linux |
|||
|
#18+
Нужно написать программу обхода каталогов в ОС Linux на языке C.Вот код: #include <string.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include<dirent.h> void rec(char name1[]) { char st[100]; struct stat s; DIR *dp; struct dirent *d; dp=opendir(name1); while(d=readdir(dp)) { strcpy(st,""); strcat(st,name1); strcat(st,"/"); strcat(st,d->d_name); stat(st,&s); if(S_ISREG(s.st_mode)) { printf("Name of file:%s",d->d_name); puts(""); } if(S_ISDIR(s.st_mode)) { rec(st); } } } int main(void) { rec("/home/serg/test"); return 0; } Компилирует без ошибок.А когда выполняешь выскакивает ошибка сегментирования. Может кто знает в чем проблема или может показать другой способ обхода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.03.2009, 18:03
|
|||
|---|---|---|---|
|
|||
Программирование под Linux |
|||
|
#18+
Harkonen А когда выполняешь выскакивает ошибка сегментирования. gdb в руки и смотреть - где и на чём. Тебя что, отладке совсем не учили?.. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.03.2009, 18:20
|
|||
|---|---|---|---|
Программирование под Linux |
|||
|
#18+
Harkonen ... Компилирует без ошибок.А когда выполняешь выскакивает ошибка сегментирования. Может кто знает в чем проблема или может показать другой способ обхода Проблема в записях c именами "." и ".." . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.03.2009, 05:31
|
|||
|---|---|---|---|
|
|||
Программирование под Linux |
|||
|
#18+
На самом деле здесь гораздо больше проблем, чем просто проблемы с обработкой "." и "..". В частности нет проверки opendir() на ошибку и нет проверки границ массива символов, из за которой в конечном итоге и происходит segmentation fault. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.03.2009, 16:05
|
|||
|---|---|---|---|
Программирование под Linux |
|||
|
#18+
BogermНа самом деле здесь гораздо больше проблем, чем просто проблемы с обработкой "." и "..". В частности нет проверки opendir() на ошибку и нет проверки границ массива символов, из за которой в конечном итоге и происходит segmentation fault.Откуда Вы знаете, что у автора нет каталога "/home/serg/test", а если есть, то с именами файлов ненормальной длины ? Которые почему-то у него возвращаются вызовом "readdir" раньше стандартной записи с именем ".", обозначающей текущий каталог и приводящей к бесконечному рекурсивному вызову функции rec с параметром name1="/home/serg/test/./././././ ...", что не может не привести аварийному останову и поэтому и является проблемой. Добавленные Вами "проблемы" суть признаки чернового варианта программы, который может быть автор и не предполагает развивать в какое-либо реальное приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.03.2009, 18:44
|
|||
|---|---|---|---|
|
|||
Программирование под Linux |
|||
|
#18+
Проблема действительно в записях c именами "." и ".." .Спасибо avb1003.Теперь возникла новая проблема:как это обойти. P.S Это черновой вариант программы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.03.2009, 18:51
|
|||
|---|---|---|---|
Программирование под Linux |
|||
|
#18+
HarkonenПроблема действительно в записях c именами "." и ".." .Спасибо avb1003.Теперь возникла новая проблема:как это обойти. P.S Это черновой вариант программыПроблема?! А если "по рабоче-крестьянски": Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=25&mobile=1&tid=1485982]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
192ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 498ms |

| 0 / 0 |
