ヘッドフォンプラグインイベントをスクリプト化するときに発生する可能性がある競合状態

ヘッドフォンプラグインイベントをスクリプト化するときに発生する可能性がある競合状態

現在ヘッドフォンの接続/分離イベントをスクリプト化しようとしています。私はこれをacpiイベントとして簡単にプログラムできることがわかりました。

/etc/acpi/events/イベントを含むファイルを作成し、event=jack[ /]headphoneスクリプトを呼び出します。

また、ヘッドセットが現在接続されているかどうかに関する情報を含むファイルと正確な行を識別しました。文書の/proc/asound/card0/codec#0具体的な内容の1つは、プラグが接続されているかどうかPin-ctls:です。0x000x40: OUT

今私が見ている問題は、ヘッドフォンジャックの現在の状態を確認するときにacpiイベントがトリガーされると、ファイルにすでにcodec#0現在の値が含まれていることです。ここに競争条件がありますか?それともこの方法を使用しても安全ですか?

答え1

ジャックの特定/イベントを確認すると、plug問題を簡単に回避できることがわかりました。unplug以下の解決策は、特定のジャックイベントに関する情報をスクリプトに提供し、ジャックが切り離されると音を無音にします。

/etc/acpi/events/jack:

event=jack[ /]headphone
action=/etc/acpi/actions/jack.sh "%e"

/etc/acpi/actions/jack.sh:

#!/bin/bash

event=$(echo "$1" | cut -d " " -f 3)

case "$event" in
    plug)
        ;;
    unplug)
    amixer set Master mute
        ;;
    *)  
        #null
esac

関連情報