修改事件上的看门狗在编解码器文件更改时不触发

2024-09-30 14:25:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个程序来检测我是否已插入或拔出耳机,并相应地执行某些操作。我使用的是Ubuntu14.04,经过一番搜索,我发现耳机/耳机连接状态被写到了一个编解码器文件中,路径是-/proc/asound/card0。包含状态信息的特定文件是codec#0.txt。在

我用Watchdog库编写了一个Python程序,并尝试将这个codec#0文件输出与初始状态进行比较不插电.txt. 根据文件是否匹配,我想启动一个音乐播放器。在

现在代码如下所示;我不明白为什么每次连接/断开耳机与插孔的连接时,on_modified事件不会触发。我看到上面提到的路径中所有文件的修改日期都改变了,但是我的程序没有打印出消息。在

代码:

import time
import os
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import filecmp

unpluggedStateFile = 'unplugged.txt'


class HeadsetPluginHandler(FileSystemEventHandler):
    def on_modified(self, event):
        print 'File changed.'
        # os.system('cat /proc/asound/card0/codec#0 > pluggedIn.txt')
        # print filecmp.cmp(unpluggedStateFile, 'pluggedIn.txt')


if __name__== "__main__":
    event_handler = HeadsetPluginHandler()
    observer = Observer()
    observer.schedule(event_handler, path='/proc/asound/card0',     recursive=False)
    observer.start()


    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
        print 'stopped'
    observer.join()

Tags: 文件代码import路径程序txtevent状态
1条回答
网友
1楼 · 发布于 2024-09-30 14:25:42

我相信这是行不通的,因为watchdog无法监视系统文件的更改。我不确定这是否100%正确,但这是我在IRC、Reddit等网站上询问的结果

相关问题 更多 >