zHz00 Untitled

четверг, 29 февраля 2024
02:05 Загадка для Блейн Моно
Программы, отрабатывающие в командной строке, никогда не должны зависать. Если они что-то сделать не могут, то надо выдавать сообщение об ошибке и завершаться.

Почему? Потому что вызов может быть частью более сложной системы. Это задача скрипта -- выяснить, что не получилось, и отработать ошибку. А задача программы -- не нарушить остальную систему.

Записать этот тезис меня сподвигла такая программа, как mediainfo.exe . Я решил ей обработать определённый каталог. Я написал короткий бат-файл с командой for, которая обходила все файлы по дереву и сдавала их mediainfo.exe, а вывод этой команды отправлялся в файл. Что могло пойти не так?

Файлов в папке было много, разных типов. Конечно, не все из них являлись медиа. Но сидеть и думать над списком расширений -- это не моё. Я обработал все файлы. Медиаинфо нормально относится к тому, что ему дают не-медиа файл. В этом случае он выводит только его размер. Я думал, что проблем возникнуть не может. Но они возникли.

Среди файлов нашёлся один не-медиа-файл, который не обрабатывался. Медиаинфо на нём просто зависал без выдачи каких-либо сообщений. Я пошёл гуглить, и обнаружил, что этот случай не единичный. Пользователи периодически жалуются разработчику в том числе и на медиа-файлы, на которых медиаинфо зависает. Далее они отправляют файл разработчику, он что-то исправляет, и в следующей версии всё нормально.

Пока не найдётся следующий такой файл.

Это означает, что в программе систематическая проблема, при которой входной файл может её повесить. А исправляются, по-видимому, только конкретные случаи.

Не знаю. что тут можно сделать. Лучше всего -- выяснить, в чём корень проблемы. Но если это невозможно... сделать отдельный поток с watchdog-таймером?..

@темы: Программирование, Борьба с техникой

URL
Не важно, что происходит снаружи, главное - что творится ...
Вино течет по коже..... не пропускает изгиба.... оно как ...
черт.... а вот передо мной лезвие..... порезатЬ?у.... бли...
Артист: Дельфин Альбом: Глубина резкости Сонга: Надеж...
что хотите со мной делайте, но вот люблю я свою работу, м...
А пока перебираюсь по многим причинам жить к веселому кор...

29.02.2024 в 02:39

29.02.2024 в 02:39
Запускай mediainfo из-под своей программы, которая и будет держать таймер. Если mefiainfo долго не отвечает, убивай ее и перезапускай.
URL

29.02.2024 в 06:49

29.02.2024 в 06:49
Foul thing, да, это будет нормальное решение. Вместо этого я сделал исключение -- при совпадении имени файла с проблемным, файл пропускается. Для одного файла это можно сделать из бат-файла без проблем.
URL

29.02.2024 в 09:32

29.02.2024 в 09:32
Я бы начал с рассмотрения альтернатив. ffprobe, например.
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail