LINUX.ORG.RU

Как получить инфу о файлах в директории из приложения


0

1

Привет,

Необходимо манипулировать файлами *.mp3 из приложения: удалять, копировать, т.д. Для получения инфы о файлах использую

system(«ls /mnt/obex/*.mp3 > /mnt/songs/newfiles»);

когда в /mnt/obex есть mp3 файлы, всё ок. Но если /mnt/obex пуст, каждый вызов system(«ls ...») выдает на консоль

ls: cannot access *.mp3: No such file or directory

Посоветуйте, пожалуйста, как использовать ls из приложения так, чтобы на консоль не выводилось данное сообщение, или альтернативу использованию system(«ls ...»).

Спасибо, Алексей.



Последнее исправление: alexvm (всего исправлений: 1)

Вот чтобы такие вопросы не задавать и такие костыли не городить стоит почитать W. Richard Stevens «Advanced Programming in the UNIX® Environment»

Begemoth ★★★★★
()

У тебя в профиле название города с ошибкой. Правильно не «Питербург», а «Петербург».

i-rinat ★★★★★
()
Ответ на: комментарий от ilovewindows

Напрягло то, что мне нужно отсортированный список файлов с расширением *.mp3, это надо самому ф-цию-фильтр писать, а ls всё сам делает. С другой стороны, функция не особо и сложная.

alexvm
() автор топика
Ответ на: комментарий от alexvm

Напрягло то, что мне нужно отсортированный список файлов с расширением *.mp3, это надо самому ф-цию-фильтр писать, а ls всё сам делает.

А ты не подумал, что если в именах файлов будут какие-то неожиданные, но допустимые символы (типа переводов строк), то вывод ls может не соответствовать ожидаемому?

Deleted
()

system(«ls /mnt/obex/*.mp3 > /mnt/songs/newfiles»);

/0

man opendir, man readdir, man fstat, man strcasecmp

А для того, чтобы узнать, является ли файл mp3, man mime

Eddy_Em ☆☆☆☆☆
()
Последнее исправление: Eddy_Em (всего исправлений: 2)
Ответ на: комментарий от Deleted

А ты не подумал, что если в именах файлов будут какие-то неожиданные, но допустимые символы (типа переводов строк), то вывод ls может не соответствовать ожидаемому?

В моей задаче все довольно прозрачно, неожиданных символов быть не должно, но за замечание спасибою

alexvm
() автор топика
Ответ на: комментарий от Eddy_Em

А для того, чтобы узнать, является ли файл mp3, man mime

У моих mp3 файлов расширение *.mp3, так что с этой стороны все ок, пока...

alexvm
() автор топика
Ответ на: комментарий от alexvm

Суффикс можно совершенно любой написать.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от alexvm

=)

неожиданных символов быть не должно

А оно всегда «не должно». Сначала «не должно», а потом всё внезапно начинает глючить, перестаёт работать, разваливается, взрывается, убивает людей...

Deleted
()
Ответ на: =) от Deleted

А оно всегда «не должно». Сначала «не должно», а потом всё внезапно начинает глючить, перестаёт работать, разваливается, взрывается, убивает людей...

Судя по звездам, тяжелая артиллерия подтянулась ). Помучаю scandir() на предмет неожиданностей, чтобы, по крайней мере, два последних пункта не реализовать случайно...

alexvm
() автор топика
Ответ на: =) от Deleted

Всё равно попадание космических частиц в кристалл не обработаешь.

anonymous
()
Ответ на: комментарий от anonymous

Всё равно попадание космических частиц в кристалл не обработаешь.

Но попадание некорректного ввода из внешней по отношению к программе среды (пользовательский ввод, файлы на ФС, сеть и т.п.) всё-таки стоит предусмотреть. Или я не прав?

Deleted
()
Ответ на: комментарий от alexvm

Судя по звездам, тяжелая артиллерия подтянулась )

Звёзды тут только толстоту тролления в основном показывают 8).

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.