Не удается прочитать стандартный файл – блок операций ввода-вывода

Я пишу программу, которая просматривает все файлы на устройстве Android, ища определенную строку. Через несколько секунд после этого процесса я застрял в следующем файле:

/ SYS / мощности / wakelock_count

Я попытался использовать grep , функцию C fopen , а также другие альтернативы, и все они блокируются в этом файле – они просто не возвращаются. Его размер составляет ровно 4096 байт, но с использованием stat или ls -l файл сообщается как обычный файл – без символической ссылки, нет файла устройства. Я проверил открытые дескрипторы – этот файл открывается системой system_se , что также позволяет удерживать дескрипторы десятков других файлов, которые я, однако, могу читать просто отлично. Я также проверил блокировки, и нет никаких MANDATORY- блокировок, которые предотвратили бы доступ к чтению.

Что такого особенного в этом файле и как я могу его прочитать или пропустить?

EDIT: Я выполняю все операции как SU.

EDIT2: ls -ld результат:

-rw-r--r-- 1 system system 4096 1971-10-10 21:59 wakeup_count 

  • Почему некоторые оболочки `read` builtin не могут прочитать всю строку из файла в` / proc`?
  • Как использовать пользовательский ввод как условие цикла while
  • while цикл работает только один раз?
  • Как подавить эхо функции проверки ошибок
  • Используя sed с herestring (<<<) и прочитайте -a
  • Разделить слова от `read` и хранить до массива?
  • Длина строки режима чтения в приглашении bash
  • Чтение значений массива в качестве пользовательского ввода дает неправильную длину массива и только -a или -p работает при чтении
  • One Solution collect form web for “Не удается прочитать стандартный файл – блок операций ввода-вывода”

    Обратите внимание, что /sys/power/wakeup_count не является «обычным» файлом, потому что он не находится в «обычной» файловой системе. Это почти наверняка в файловой системе «sysfs-power», которая похожа на файловую систему «proc», поскольку она не представляет ничего подобного файлам на дисках.

    В документации файловой системы sysfs-power :

     What: /sys/power/wakeup_count Date: July 2010 Contact: Rafael J. Wysocki <rjw@rjwysocki.net> Description: The /sys/power/wakeup_count file allows user space to put the system into a sleep state while taking into account the concurrent arrival of wakeup events. Reading from it returns the current number of registered wakeup events and it blocks if some wakeup events are being processed at the time the file is read from. Writing to it will only succeed if the current number of wakeup events is equal to the written value and, if successful, will make the kernel abort a subsequent transition to a sleep state if any wakeup events are reported after the write has returned. 

    Таким образом, висячие прочтения могут не быть проблемой, хотя долгое время висит, похоже, вряд ли дается приведенная выше документация.

    Тем не менее, вполне возможно, что вы можете столкнуться с этой ошибкой: Чтение из / sys / power / wakeup_count вешает бесконечно. Это почти то же самое, что вы описываете.

    Interesting Posts

    Разрешить пользователю выполнять одну команду в качестве другого пользователя

    Как автоматически запускать команду при отключении сети

    Можно ли отключить программу GUI, запущенную в vifm из vifm?

    Как linux загружает прошивку для встроенных модулей драйверов

    Разрешить имя netbios и передать его в mount.cifs в скрипте

    Помогла ли моя команда $ mv '* .mobi' соединить мои файлы?

    Установить путь для всех пользователей (оболочки для входа и без входа)

    чтение ввода в sed

    Как найти окончательный сертификат CA в действительном сертификате

    Сервер SSH не отвечает на запрос на подключение

    Поддержка Loop-устройства на самокомпилированном ядре не работает

    Доступ к сети в сетевом пространстве имен

    Полностью отключить ключ PrntScr

    Возможно ли возвратное значение «-1» метода функции close close ()?

    Найти количество элементов в массиве, на которые ссылается динамически созданное имя

    Linux и Unix - лучшая ОС в мире.