Size: a a a

2020 April 21

VP

Vadim "Oxyd&quo... in Linux Чат
bofh666
Всем доброй ночи)
Спокойного времени суток!
источник

С

Сергей in Linux Чат
Vadim "Oxyd" Priluzkiy
Короче. Это работает так.... Ты говоришь — хочу создать(изменить, удалить etc) файл. Вызывается IOCTL — соответствующий системный вызов ЯДРА. и ОДНОВРЕМЕННО, происходит пинок inotify, который тоже системный вызов ЯДРА. Всё. Не надо никаких циклов.
Ну, оно, конечно, выглядит изящно и достойно изучения. Я так понимаю, нас по ссылке будет интересовать последний скрипт, а именно:
inotifywait
То есть скрипт доходит до inotifywait и... и ждёт. Никаких циклов, то есть абсолютно. Слушает ухом, пока inotifywait ему цинканёт чего-нибудь. Да и хрен с ним со всем.
источник

VP

Vadim "Oxyd&quo... in Linux Чат
Сергей
Ну, оно, конечно, выглядит изящно и достойно изучения. Я так понимаю, нас по ссылке будет интересовать последний скрипт, а именно:
inotifywait
То есть скрипт доходит до inotifywait и... и ждёт. Никаких циклов, то есть абсолютно. Слушает ухом, пока inotifywait ему цинканёт чего-нибудь. Да и хрен с ним со всем.
Да. Как-то так.
источник

С

Сергей in Linux Чат
Vadim "Oxyd" Priluzkiy
Да. Как-то так.
Так ей всё равно в цикл всё это заряжать. Вот у ней 10 торрентов будет, 10 раз должен inotifywait сработать. Если это не цикл, тогда я не знаю, чё.
источник

VP

Vadim "Oxyd&quo... in Linux Чат
Сергей
Так ей всё равно в цикл всё это заряжать. Вот у ней 10 торрентов будет, 10 раз должен inotifywait сработать. Если это не цикл, тогда я не знаю, чё.
Твой вариант — пуллинг жрущий ресурсы. Вариант с inotifywait — система на прерывании(ну если точнее, это называется hook). У твоего варианта — цикл прокрутится 100500 мильёнов раз на 10 файлов, правильный вариант — прокрутится 10 раз на 10 файлов.
источник

VP

Vadim "Oxyd&quo... in Linux Чат
А, да... Сегодня было забавное... Цена нефти WTI падала почти до -40$
источник

VP

Vadim "Oxyd&quo... in Linux Чат
источник

С

Сергей in Linux Чат
Vadim "Oxyd" Priluzkiy
Твой вариант — пуллинг жрущий ресурсы. Вариант с inotifywait — система на прерывании(ну если точнее, это называется hook). У твоего варианта — цикл прокрутится 100500 мильёнов раз на 10 файлов, правильный вариант — прокрутится 10 раз на 10 файлов.
Ну так-то да. А тогда такой ещё вопрос- а как часто проверяется, функция inotifywait отработала или нет?
источник

VP

Vadim "Oxyd&quo... in Linux Чат
Сергей
Ну так-то да. А тогда такой ещё вопрос- а как часто проверяется, функция inotifywait отработала или нет?
Я-ж сказал, это не так работает....
В программный интерфейс входят следующие системные вызовы:

      *  Вызов  inotify_init(2)  создаёт экземпляр inotify и возвращает файловый
         дескриптор,   ссылающийся   на   экземпляр   inotify.    Более    новый
         inotify_init1(2)  подобен  inotify_init(2),  но  имеет  аргумент flags,
         который предоставляет доступ к некоторым дополнительным возможностям.

      *  Вызов inotify_add_watch(2) изменяет «список  наблюдения»,  связанный  с
         экземпляром  inotify. Каждый элемент (сторожок (watch)) в списке задаёт
         путь к файлу или каталогу  и  некоторый  набор  событий,  которые  ядро
         должно  отслеживать  для  файла,  на который указывает этот путь. Вызов
         inotify_add_watch(2)  или  создаёт   новый   сторожок,   или   изменяет
         существующий.  Каждый сторожок имеет уникальный «дескриптор сторожка» —
         целое число, возвращаемое inotify_add_watch(2) при создании сторожка.

И...
*  При возникновении событий с отслеживаемыми файлами  и  каталогами,  эти
         события становятся доступны приложению в виде структурированных данных,
         которые можно прочитать из  файлового  дескриптора  inotify  с  помощью
         read(2) (смотрите ниже).

...

Чтение событий из файлового дескриптора inotify
      Чтобы определить,  что  события  произошли,  приложение  должно  прочитать
      (read(2))   файловый   дескриптор   inotify.  Если  событий  не  было,  то
      предполагая,  что  это  блокирующий  файловый  дескриптор,  вызов  read(2)
      заблокирует работу до возникновения, по крайней мере, одного события (если
      не будет прерван сигналом; в  этом  случае  вызов  завершается  с  ошибкой
      EINTR, смотрите signal(7)).

      При  успешном  выполнении  read(2)  возвращает  буфер  с  одной  или более
      структурами следующего вида:
...

То-есть грубо говоря, в сорцах inotifywait у тебя будут три системных вызова — inotify_init, inotify_add_watch и read, на котором собственно программа и остановится до появления заданного в inotify_add_watch события.
источник

E

Earl Sweetshirt in Linux Чат
Да вот у transmission-daemon родной функционал
источник

E

Earl Sweetshirt in Linux Чат
У меня в репах есть transmission-remote-cli и transmisson-daemon, всё больше ничего мудрить не надо. На арчвики написано как делать.
источник

VP

Vadim "Oxyd&quo... in Linux Чат
Earl Sweetshirt
Да вот у transmission-daemon родной функционал
Который, кстати, с вероятностью 99%, тоже работает через inotify.
источник

E

Earl Sweetshirt in Linux Чат
Vadim "Oxyd" Priluzkiy
Который, кстати, с вероятностью 99%, тоже работает через inotify.
Возможно, но все программы через что-то работают. Зато тут всё просто.
источник

E

Earl Sweetshirt in Linux Чат
Vadim "Oxyd" Priluzkiy
Который, кстати, с вероятностью 99%, тоже работает через inotify.
Вы, товарищ Оксид, не спите чтоли никогда? И день и ночь онлайн.
источник

HH

Hi Hello in Linux Чат
Earl Sweetshirt
Вы, товарищ Оксид, не спите чтоли никогда? И день и ночь онлайн.
Я сплю по 4-6 часов
источник

D

Denys in Linux Чат
Hi Hello
Я сплю по 4-6 часов
Днём 😂
источник

HH

Hi Hello in Linux Чат
Vadim "Oxyd" Priluzkiy
А, да... Сегодня было забавное... Цена нефти WTI падала почти до -40$
Пойду закажу себе бочку , если оплатят доставку 😁
источник

E

Earl Sweetshirt in Linux Чат
А ещё говорят что я шизик что в отпуску в 5 утра встаю
источник

HH

Hi Hello in Linux Чат
Denys
Днём 😂
Ложусь к обеду , или в обед
источник

D

Denys in Linux Чат
Hi Hello
Ложусь к обеду , или в обед
Чего так?
источник