Igor
Таймер не выполняется до конца соответственно и основной цикл плеера тоже
Mad
В чём проблема считывать и чистить?
потому-что твой диск умрет на втором часовом фильме в mpv
Igor
это чтение, а не запись
Snusmumriken
Не могу сказать.
Igor
твой операционка за день читает больше, чем этот скрипт за условных 10 часов
Snusmumriken
Твой браузер например, тысячи раз в секунду пишет на диск, сохраняет кукисы, состояния машины, кеширует и ещё кучу всего делает.
Snusmumriken
А раз в секунду — это совершенно незначительно, я гарантирую. Оооо, mpv читает поток с диска. Делает это много раз в секунду по маленькому кусочку )
Mad
твой операционка за день читает больше, чем этот скрипт за условных 10 часов
вы не понимаете, это другое А вообще линукс постоянно использует теже fifo, и прям такого себе не позволяет, а там где это необходимо используется inotify
Snusmumriken
Кек.
Mad
Вообщем #2 остается - Если я направлю поток команд - то они все адекватно интерпретируются, друг за другом, все, это же все таки First In First Out
Mad
я это делаю вообще для использования в скрипте, и задержка в одну секунду - значительна
Igor
при неблокирующем доступе к пайпу твой first in first out сыпется, потому что команда может не полностью прочитаться
Igor
в теории
Igor
если прям так важен fifo, подрубай lua-lanes и в отдельном потоке верти всё это дело
Igor
а через линду команды посылай в основной
Snusmumriken
Для убийства тредов lanes нужно чтобы выполнялись луёвые команды, это уже проходили ))
Igor
это да
Igor
но при команде quit можно сделать чтобы и сам тред завершался
Snusmumriken
Я уже писал асинхронные хттп-запросы, которые в цикле гоняются до выполнения, чтобы иметь возможность убивать потоки с ланесом из родителя.
Snusmumriken
(проблемы многопоточки)
Mad
если прям так важен fifo, подрубай lua-lanes и в отдельном потоке верти всё это дело
проблема не в мультипоточности, а в том что в конце, когда все остановятся, этот скрипт все еще будет ждать и не даст закончится. Может в lua вообще есть какой-то killall, который может это сделать?
Snusmumriken
Ммм, у тебя даже событие shutdown не вызовется, до него дело не дойдёт.
Mad
Короче я придумал самое удобное решение
Snusmumriken
Не использовать fifo-io? )
Mad
в пизду этот lua, в пизду этот mpv, в пизду этот файл, в пизду этот quit, я добавлю горячую клавишу которая будет делать echo quit > ars и так буду выходить из mpv. В прочем я это и так собирался делать, за исключением того что больше не будет возможности выходить просто так.
WDMR
Не использовать fifo-io? )
А что нельзя перед чтением проверить, есть ли в этом фифе данные, и если нет не читать и не ждать
Snusmumriken
Хе _
Snusmumriken
Mad
function quit_handler() mp.command("quit") end mp.add_key_binding("x", "quit?", quit_handler)
не понимаю как это поможет, но я уже ничего в этом луа не понимаю, поэтому пробую
Snusmumriken
Это просто выход из плеера на кнопку "x"
WDMR
https://www.linux.org.ru/forum/development/16874173
Snusmumriken
это я понял
Смотри. Сама луа по себе простая и прямая. Как питон, например. Как перл пых или лисп. Даётся файл, все команды из него просто исполняются, и из файла выходится. Всё. Так работает стандартный интерпретатор. Никакой асинхронности, просто команды, просто ввод-вывод. Но это апишка программы mpv. Программа имеет события и уже не просто прогоняет файл, а собирает из файла функции (ты их регистрируешь), и эта же программа потом дёргает зареганные тобой функции. Ты регаешь функцию-биндинг на кнопку — она её запоминает и вызовет когда будет нажата кнопка. Ты регаешь функцию на таймер программы — программа запомнит и будет вызывать её по таймеру. Логика тупейшая.
Igor
не понимаю как это поможет, но я уже ничего в этом луа не понимаю, поэтому пробую
проблема кроется не столько в Lua, сколько в принципах работы IO
Igor
fifo это есть io механизм))
Igor
я обобщил просто
Mad
проблема кроется не столько в Lua, сколько в принципах работы IO
мне не особо нужно чтобы ввод-вывод работал подругому, я лишь хочу пристрелить процесс когда я нажал на выход, а не когда мне приходится использовать killall mpv; killall mpv
Igor
os.execute("killall mpv") ¯\_(ツ)_/¯
Mad
https://www.linux.org.ru/forum/development/16874173
Что самое интересное - этот бред не понимают еще 3 человека, которые решили следить за темой
Snusmumriken
"Хочу жевать кактус, хочу быть сам себе злобным буратиной". Я уже написал рабочее решение, но ты назвал его говнокодом. Хотя это единственный и весьма корректный вариант для твоих задач.
Snusmumriken
Файл всё ещё fifo или обычный?
Igor
fifo это строго системозависимая штука, ни один кроссплатформенный скриптовой язык из тех, что я знаю, не пихает такие апишки в стандартную библиотеку свою.
Snusmumriken
Тогда что тебе не помогло? ))
Igor
научить тот же lua работать с этими приколами можно только путём подключения сторонних сишных библиотек
Mad
fifo это строго системозависимая штука, ни один кроссплатформенный скриптовой язык из тех, что я знаю, не пихает такие апишки в стандартную библиотеку свою.
на первый взгляд ему и не нужно, вроде все работает как должно, за исключением того что чтение нельзя прекратить
Mad
Тогда что тебе не помогло? ))
твой lua скрипт который биндит x на выход
Snusmumriken
А оно выполнено? Ну, в смысле ты его подключил?
Snusmumriken
А mpv в это время занят чтением fifo-файла и поэтому ничего не выполняет и вообще зависший, да?
Igor
Кстати, я не уверен, но вроде mpv таймеры в рилтайм потоке крутит
Mad
А mpv в это время занят чтением fifo-файла и поэтому ничего не выполняет и вообще зависший, да?
Нет, он зависший и занят только чтением fifo когда нужно выходить
Igor
ну, то есть с приоритетом realtime
Snusmumriken
Ну в общем, тут медицина бессильна, полагаю можно идти на паузу.
Snusmumriken
Делов в общем-то на пять минут, но "хочу fifo" всё портит. Не нужен тут тебе fifo. Получается буквально как в анекдоте: —Доктор, у меня всё плохо, жена пилит, дети пилят, работа пилит, пила пилит, что делать? — Поставьте посреди коридора козу (fifo-файл) и приходите через неделю. — Доктор, доктор, за неделю меня не только жена запилила и дети запилили и всё остальное запилило, так теперь посреди коридора ещё и коза (fifo-файл) стоит и орёт! Что мне делать? — Уберите козу (fifo-файл) и приходите снова. — Ну как, голубчик? — Хорошо! Коза (fifo-файл) не орёт! Читай себе обычный файл раз в секунду и всё заебумба. Он не блокирует и этим прекрасен.
WDMR
А зачем вообще изначально тут эта фифа?
Snusmumriken
Чтобы не говнокод! Потому что это линукс-вэй и вообще. Чтение с диска убивает диск!!!1 (не особо)
Snusmumriken
Нет )
Snusmumriken
Но чтение!
Snusmumriken
Карочи, самое время взять здоровый болт и положить на ос-специфичную ерунду.
Igor
Неужели
Tony
Неужели
Прямо как в Дискорде
Igor
Прямо как в Дискорде
Как по мне, такая функция должна быть в любом мессенджере
Snusmumriken
@ItManGlass насколько ты живой?
Egor
Приветы, подскажите, а как на луа разделить через пробел строку, НО!! например: сегодня хороший, теплый день. Куча всяких сообщений Должно выйти такое: a='сегодня' b='хороший,' c='теплый день. Куча всяких сообщений' то есть по пробелу делим только первые N слов, а остаток в какую-то переменную запихать конечно в лоб можно решить через циклы, типа первый второй N-ый шаг пропихать по переменным а все остальное пихаем в переменную какую-то, но вдруг есть покрасивее подход
fgntfg
Регулярки