【问题标题】:How to poll a file in /sys如何在 /sys 中轮询文件
【发布时间】:2011-03-01 01:18:14
【问题描述】:

我无法读取 /sys/ 中的文件,该文件包含诺基亚 N900 手机上环境光传感器的光强度(以勒克斯为单位)。

See thread on talk.maemo.org here

我尝试使用 pyinotify 来轮询文件,但这对我来说似乎有些错误,因为文件总是“process_IN_OPEN”、“process_IN_ACCESS”和“process_IN_CLOSE_NOWRITE”

我基本上想尽快获得更改,如果发生更改触发事件,则执行一个类...

这是我尝试过的代码,它有效,但不像我预期的那样(我希望触发 process_IN_MODIFY):

#!/usr/bin/env python

import os, time, pyinotify
import pyinotify

ambient_sensor = '/sys/class/i2c-adapter/i2c-2/2-0029/lux'

wm = pyinotify.WatchManager()  # Watch Manager
mask = pyinotify.ALL_EVENTS

def action(self, the_event):
    value = open(the_event.pathname, 'r').read().strip()
    return value

class EventHandler(pyinotify.ProcessEvent):
    ...
    def process_IN_MODIFY(self, event):
     print "MODIFY event:", action(self, event)
   ...

#log.setLevel(10)
notifier = pyinotify.ThreadedNotifier(wm, EventHandler())
notifier.start()

wdd = wm.add_watch(ambient_sensor, mask)
wdd

time.sleep(5)

notifier.stop()

更新 1:

嗯,我不知道是否有特殊机制的情况如下:

f = open('/sys/class/i2c-adapter/i2c-2/2-0029/lux')
while True:
    value = f.read()
    print value
    f.seek(0)

这个,包裹在一个自己的线程中,可以解决问题,但是有没有人有更聪明、更少占用 CPU 和更快的方法来获取最新值?

【问题讨论】:

    标签: python maemo sys pyinotify


    【解决方案1】:

    由于 /sys/file 是一个伪文件,它只显示底层易变操作系统值的视图,因此永远不会引发修改事件是有道理的。由于文件是从下面“修改”的,它不遵循常规的文件系统语义。

    如果从不引发修改事件,则使用像 pinotify 这样的包不会让您有任何帮助。 '最好寻找特定于平台的机制。

    对更新 1 的回应:

    由于 N900 maemo 运行时支持GFileMonitor,您最好检查一下它是否可以提供您想要的异步事件。

    忙着等待——据我所知,你知道——是一种浪费。在手机上,它真的可以耗尽电池。您至少应该在忙碌的循环中睡觉。

    【讨论】:

      【解决方案2】:

      嗯,我不知道是否有特殊机制的情况如下:

      f = open('/sys/class/i2c-adapter/i2c-2/2-0029/lux')
      while True:
          value = f.read()
          print value
          f.seek(0)
      

      这个,包裹在一个自己的线程中,可以解决问题,但是有没有人有更聪明、更少占用 CPU 和更快的方法来获取最新值?

      干杯 比约恩

      【讨论】:

        猜你喜欢
        • 2013-10-30
        • 1970-01-01
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        • 2016-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多