Линуксоиды Волгограда?

Тема в разделе "Софт", создана пользователем 027, 24.01.18.

  1. МИНЗДРАВ

    МИНЗДРАВ Активный участник

    1.734
    161
    программа Linux в каждый дом
     
  2. The Chief

    The Chief Активный участник

    12.293
    1.100
    Товарищ майор, перелогиньтесь.
     
  3. The Chief

    The Chief Активный участник

    12.293
    1.100
    Линукс… обожаю!

    Итак, кто скажет, не гугля, почему этот код нерабочий? lirc_monitor просто читает строки из устройства (сокет /var/lircd) и выплёвывает в stdout.

    Код:
    while true; do
    lirc_monitor | while read line; do
        if echo $line | grep -q "0000000000000000 05 EJECT MTK_IR"; then
    #      something after LONG pressing EJECT button
        elif echo $line | grep -q "0000000000000000 05 GREEN MTK_IR"; then
    #      something after LONG pressing GREEN button
        fi
      done
    done
    
     
    Последнее редактирование: 19.04.23
  4. oesoes

    oesoes Участник

    397
    22
    А вывод вообще в консоли е по lirc_monitor? Он может в stderr пишет? Я бы чекнул 2> tmp
     
    Последнее редактирование: 12.08.23
  5. The Chief

    The Chief Активный участник

    12.293
    1.100
    Не-а, не угадали. lirc_monitor пишет в stdout, я же писал (это утилитка на пару кб, я её всю разобрал в IDA Pro).

    Ещё раз — этот код синтаксически полностью верен. И даже исполняется. Но совершенно непригоден для того, для чего предполагался. Оказывается, почти никто не знает, что потоки std в линюхе буферизируются. По умолчанию. Причём не построчно, а full buffering, каковой буфер может быть и мегабайт запросто. Когда мы получим в таком случае первый read line и реакцию на кнопку? Ага — хрен его знает, когда, когда буфер наконец-то flush-нется и строки в read line вывалятся сразу кучей.

    Решений два:

    1. Патчить lirc_monitor, чтобы после вывода каждой строки он делал flush. SDK на эту железку у меня нет, не перекомпилируешь. Мне удалось сделать бинарный патч (я заменил одну из ненужных функций в секции импортов на fflush(), нашёл место, куда воткнуть вызов) и заработало. Правда, впердолить удалось только fflush(0), который сбрасывает все системные i/o буферы, что нехорошо. Править arm код наживую — то ещё садо-мазо, надо отметить, особенно радует его дебильная адресация.

    2. Когда я это уже всё сделал, ВНЕЗАПНО оказалось, к этой железке есть загружаемый с флешки отладочный busybox, а в оном тулза script, которая делает line buffering всему, что из-под неё запускается. И попустило:

    Код:
    /tmp/script -q -c "lirc_monitor" /dev/null | while read line; do
     
    oesoes нравится это.
  6. Магадан

    Магадан Активный участник

    11.644
    472
    Я когда-то давно начинал с альт-линукса - это был первый линукс который я увидел. Долгое время после этого был линуксоидом (скорее по интересам нежели по навыкам). Довольно фанатичным. Потом в какой то момент друг с работы ушел в админы, и я тоже подумал - надо. И решил что будет по хардкору - стану BSD шником. Речь шла с ходу - не о туманном "стать" а доподготовится за пол года и выйти на работу.
    В общем - я уволился, на последнюю зарплату купил книжку Эви Немет и Гарта Снайдера, по тем временам увесисто стоила - тысяч 6 рублей. И на три месяца ушел в летнюю кухню - осваивать. Вообще не вылезал оттуда 3 месяца. А спустя - устроился на работу.
    И тут надо сказать, что книжка сразу про несколько ОС написана, и когда ее читаешь непрерывно следуют друг за другом озарения связанные с родством всех операционок мира.
    Например - там упоминалось о том что WinNT ядро полностью поддерживает стандарты posix в то числе и такую шляпу как регистрозависимость, но просто она там для удобства отключена (и мол - включить можно). А это была одна из расхожих баек про "фундаментальные отличия", в среде линуксоидов.
    Вот с тех пор я перестал фанатеть про линукс. Дома и по работе использую Астра Линукс, серверные убунты, и свободные сборки базальта.

    Кстати - книжку всем рекомендую, особенно людям котоыре одинаково интересуются и ПО и железом - если вы начинающий, то она не только даст новые знания но и объединит то что у вас уже есть в единую систему.
     
  7. МИНЗДРАВ

    МИНЗДРАВ Активный участник

    1.734
    161
    А как называется язык программирования Linux? Баш консоле? Или просто баш?
     
  8. oesoes

    oesoes Участник

    397
    22
    Вона как... Я тут погуглил и оказалось, что люди уже м вашей проблемой сталкивались и есть даже патченный лиркмонитор, и даже вроде как от автора сего софта. Оказывается проблема давняя.
     
  9. The Chief

    The Chief Активный участник

    12.293
    1.100
    Нет, от меня. :) Тема на ixbt, да? И ещё на испанском форуме по клонам Oppo UDP-203.
     
    Последнее редактирование: 12.08.23
  10. IvUs

    IvUs Активный участник

    13.307
    1.014
    Я почти никто, у меня консольные логи всегда по fflush(stdout) выплёвываются. Иначе, если прожка упадёт, то в логах можно и не увидеть где.
     
    Последнее редактирование: 12.08.23
    The Chief нравится это.
  11. МИНЗДРАВ

    МИНЗДРАВ Активный участник

    1.734
    161
    Пригласила девушка парня "винду переустановить". Но парень оказался не простым и действительно начал ставить ПО.
    Тогда девушка сказала прямо: "хочу трахаться". Парень пронзительно на неё посмотрел и со словами "Ааа. .., Что ты сразу то не сказала? " поставил линукс