Приветствую! Вас!
Такой вопрос.
уже несколько раз останавливает меня одна проблема.
вообще-то очень хочется самому сообразить.
уж больно интересная задачка.Как построена логика в РЕКУРСИВНОМ проходе по директориям ?
ведь на этом построены все программы ls grep find slocate и т. д.
или не все или я в чём-то заблуждаюсья знаком с вызовом ftw у меня даже получилось
1. используют ли программы ls grep find slocate и др.
вызов ftw или у них свой алгоритм?
2. если у ls grep find slocate и др. свой алгоритм
то как он выглядит.
3. Есть ли в QT что-то подобное ftw
обычно C++ библиотеки от IDE очень умные
пытался в QT найти что-то вроде( QFileDialog ).
например говориш ей директорию а она сама возввращает
файлы или директории в поддиректориях
никак не мог найти ?или нужно самому мудрить?
>Приветствую! Вас!
>Такой вопрос.
>уже несколько раз останавливает меня одна проблема.
>вообще-то очень хочется самому сообразить.
>уж больно интересная задачка.
>
>Как построена логика в РЕКУРСИВНОМ проходе по директориям ?
>
>ведь на этом построены все программы ls grep find slocate и т.
>д.
>или не все или я в чём-то заблуждаюсь
>
>я знаком с вызовом ftw у меня даже получилось
>
>1. используют ли программы ls grep find slocate и др.
> вызов ftw или у них свой алгоритм?
>
>2. если у ls grep find slocate и др. свой алгоритм
> то как он выглядит.
>
>3. Есть ли в QT что-то подобное ftw
> обычно C++ библиотеки от IDE очень умные
> пытался в QT найти что-то вроде( QFileDialog ).
> например говориш ей директорию а она сама возввращает
> файлы или директории в поддиректориях
> никак не мог найти ?
>
> или нужно самому мудрить?
>
Если у Вас FreeBSD, - поставьте сырцы и посмотрите исходники, например
/usr/src/bin/ls/*
>>Приветствую! Вас!
>>Такой вопрос.
>>уже несколько раз останавливает меня одна проблема.
>>вообще-то очень хочется самому сообразить.
>>уж больно интересная задачка.
почему интересная? вроде как классическая, наверняка решается во всех ФС (древовидных) одинаково. т.е. функция берет список файлов из тек. каталога, и для каждого найденного каталога вызывает себя.
>>>Приветствую! Вас!
>>>Такой вопрос.
>>>уже несколько раз останавливает меня одна проблема.
>>>вообще-то очень хочется самому сообразить.
>>>уж больно интересная задачка.
>почему интересная? вроде как классическая, наверняка решается во всех ФС (древовидных) одинаково.
>т.е. функция берет список файлов из тек. каталога, и для каждого
>найденного каталога вызывает себя.И на практике эта функция оказывается офигенно непрактичной, от бешенного пожирания ресурсов до stack overflow при обходе реального 200Гб винта. Лучше уж итеративный подход, когда функция вызывается в цикле и после каждого своего выполнения сохраняет текущее состояние для последующих вызовов в какой-нть структуре...
>>>>Приветствую! Вас!
>>>>Такой вопрос.
>>>>уже несколько раз останавливает меня одна проблема.
>>>>вообще-то очень хочется самому сообразить.
>>>>уж больно интересная задачка.
>>почему интересная? вроде как классическая, наверняка решается во всех ФС (древовидных) одинаково.
>>т.е. функция берет список файлов из тек. каталога, и для каждого
>>найденного каталога вызывает себя.
>
>И на практике эта функция оказывается офигенно непрактичной, от бешенного пожирания ресурсов
>до stack overflow при обходе реального 200Гб винта. Лучше уж итеративный
>подход, когда функция вызывается в цикле и после каждого своего выполнения
>сохраняет текущее состояние для последующих вызовов в какой-нть структуре...извините
о какой функции вы говорите
о ftw или о другой
>>>>>Приветствую! Вас!
>>>>>Такой вопрос.
>>>>>уже несколько раз останавливает меня одна проблема.
>>>>>вообще-то очень хочется самому сообразить.
>>>>>уж больно интересная задачка.
>>>почему интересная? вроде как классическая, наверняка решается во всех ФС (древовидных) одинаково.
>>>т.е. функция берет список файлов из тек. каталога, и для каждого
>>>найденного каталога вызывает себя.
>>
>>И на практике эта функция оказывается офигенно непрактичной, от бешенного пожирания ресурсов
>>до stack overflow при обходе реального 200Гб винта. Лучше уж итеративный
>>подход, когда функция вызывается в цикле и после каждого своего выполнения
>>сохраняет текущее состояние для последующих вызовов в какой-нть структуре...
>
>извините
>о какой функции вы говорите
>о ftw или о другой
Я говорю о любой рекурсивной функции, которая "берет список файлов из тек. каталога, и для каждого найденного каталога вызывает себя". Неограниченная рекурсия в любом случае зло для практического применения. Как на разных системах реализована ftw, я, к сожалению, не знаю, но хотелось бы верить, что с использованием итеративного подхода.
>>Приветствую! Вас!
>>Такой вопрос.
>>уже несколько раз останавливает меня одна проблема.
>>вообще-то очень хочется самому сообразить.
>>уж больно интересная задачка.
>>
>>Как построена логика в РЕКУРСИВНОМ проходе по директориям ?
>>
>>ведь на этом построены все программы ls grep find slocate и т.
>>д.
>>или не все или я в чём-то заблуждаюсь
>>
>>я знаком с вызовом ftw у меня даже получилось
>>
>>1. используют ли программы ls grep find slocate и др.
>> вызов ftw или у них свой алгоритм?
>>
>>2. если у ls grep find slocate и др. свой алгоритм
>> то как он выглядит.
>>
>>3. Есть ли в QT что-то подобное ftw
>> обычно C++ библиотеки от IDE очень умные
>> пытался в QT найти что-то вроде( QFileDialog ).
>> например говориш ей директорию а она сама возввращает
>> файлы или директории в поддиректориях
>> никак не мог найти ?
>>
>> или нужно самому мудрить?
>>
>
>
>Если у Вас FreeBSD, - поставьте сырцы и посмотрите исходники, например
>/usr/src/bin/ls/*имеется и linux и freebsd исходники
я копался но нашел
я подумал так: ведь это shell штучки
и поэтому как такового ls.c не существует
а сам код где-нибудь в общем исходнике
но я попробую ещё разок поискать
спасибо!
>freebsd исходники
>как такового ls.c не существуетсуществует:
/usr/src/bin/ls/ls.c
>имеется и linux и freebsd исходники
>я копался но нашел
>я подумал так: ведь это shell штучки
>и поэтому как такового ls.c не существует
с чего бы это быть "штучкам" shell? типа каждый писатель шелл организует ls по-своему??? в каждой свои ашипки и проч? это не unix-way. как это нет ls.c? бинарник есть, а исходника нету? нууу, вряд ли они его сразу в кодах набирают, посему воспользуемся той же find, про которую изначально был вопрос, и она нам скажет (для freebsd, например), что мол гляди в
/usr/src/bin/ls/ и найдешь там то, что ищешь.вот только я не понял, как связана ls с вашим вопросом о рекурсивном хождении по дереву каталогов.
>а сам код где-нибудь в общем исходнике
>но я попробую ещё разок поискать
>спасибо!
>>имеется и linux и freebsd исходники
>>я копался но нашел
>>я подумал так: ведь это shell штучки
>>и поэтому как такового ls.c не существует
>с чего бы это быть "штучкам" shell? типа каждый писатель шелл организует
>ls по-своему??? в каждой свои ашипки и проч? это не unix-way.
>как это нет ls.c? бинарник есть, а исходника нету? нууу, вряд
>ли они его сразу в кодах набирают, посему воспользуемся той же
>find, про которую изначально был вопрос, и она нам скажет (для
>freebsd, например), что мол гляди в
>/usr/src/bin/ls/ и найдешь там то, что ищешь.
>
>вот только я не понял, как связана ls с вашим вопросом о
>рекурсивном хождении по дереву каталогов.
я не утверждаю о ls я предполагаю>>а сам код где-нибудь в общем исходнике
>>но я попробую ещё разок поискать
>>спасибо!
>имеется и linux и freebsd исходникиlocate ls.c
>я копался но нашел
>я подумал так: ведь это shell штучки
>и поэтому как такового ls.c не существует
>а сам код где-нибудь в общем исходнике
>но я попробую ещё разок поискать
>спасибо!