相关疑难解决方法(0)

通知 /proc 下文件的更改

我在 bash 中编写了一个小“守护进程”,如果检测到它们,它将切换到耳机,如果没有,则切换到带有 PulseAudio 的外部 USB 扬声器。

我正在寻找的是某种方式来获取文件更改的通知/proc/asound/card0/codec#0,就像inotifywait在真实文件上一样(将 /proc 下的文件视为“伪文件”)。

我找到我的代码有点疯狂,因为它运行sleep 1awk整个一天,也就是86400次,每天:)

while sleep 1; do
    _1=${_2:-}
    _2=$(awk '/Pin-ctls/{n++;if(n==4)print}' '/proc/asound/card0/codec#0')

    [[ ${_1:-} = $_2 ]] ||
        if [[ $_2 =~ OUT ]]; then
            use_speakers
        else
            use_internal
        fi
done
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是类似的东西(这个例子不起作用):

codec=/proc/asound/card0/codec#0
while inotifywait $codec; do
    if [[ $(awk '/Pin-ctls/{n++;if(n==4)print}' $codec) =~ OUT ]]; then
        use_speakers
    else
        use_internal
    fi
done
Run Code Online (Sandbox Code Playgroud)

这样,只有在$codec文件发生实际更改时,才会运行循环内的命令。

proc inotify

14
推荐指数
2
解决办法
1万
查看次数

标签 统计

inotify ×1

proc ×1