Archiv > Development

Windows Remote Control

<< < (12/16) > >>

clausmuus:
Hast Recht, hatte das while true vergessen. Das ganze hätte dann natürlich so aussehen müssen:
--- Code: ---echo "Starting inputlircd:"
{
    while true; do
        inputlircd -f $INPUTLIRC_ARGS
        sleep 1
    done
} >>/var/log/sysinit 2>&1 &
--- End code ---
Du kannst das zum testen einfach auf Deinem System ändern. Ich komme erst am Montag dazu das zu fixen.

Claus

iwow:
Hallo Claus,

bist du sicher, das bei deiner Lösung inputlirc beendet werden kann? Beendet ein /etc/init.d/inputlirc stop den inputlircd Profzess oder die Shell, die durch {...} neu gestartet wird und damit auch den inputlircd Prozess? Ich kenne mich in Shellprogrammierung nicht so tief aus . Deshalb habe ich den Ansatz wie bei /etc/init.d/vdr und /usr/bin/runvdr gewählt.

/etc/init.d/inputlirc sieht bei mir nun so aus:


--- Code: ---!/bin/sh
#
# Startet inputlirc

case "$1" in
        start)
                . /etc/init.d/rc.functions
               echo "Starting inputlircd:"

                if [ -e /var/run/runinputlirc.pid ]; then
                        runinputlirc -k
                fi

                {
                        runinputlirc >>/var/log/sysinit 2>&1 &
                        sleep 1
                } >>/var/log/sysinit 2>&1 &

                check_status
               ;;
        stop)
                . /etc/init.d/rc.functions
                echo "Stoping inputlircd:"
                rm -f /var/run/runinputlirc.pid
                runinputlirc -k
                check_status
               ;;
        restart)
                $0 stop
                $0 start
               ;;
        init)
                start=1
                before=vdr
                #after=xorg
               ;;
        *)
                echo "Usage $0 {start | stop | restart}" >&2
                exit 1
esac

--- End code ---

/usr/bin/runinputlirc:

--- Code: ---!/bin/sh
#
# run inputlirc

rm -f /tmp/inputlirc_stop

case "$1" in
        -k)
                touch /tmp/inputlirc_stop
                killproc "/usr/sbin/inputlircd" 10
                exit $?
               ;;
        -r)
                killproc "/usr/sbin/inputlircd" 10
                exit $?
               ;;
        -n)
                norestart=1
               ;;
        -*)
                echo "Usage $0 {-k | -r | -q}"
                echo "      -k   kill inputlirc"
                echo "      -r   restart inputlirc"
                echo "      -n   no restart if an error occur"
                exit 1
               ;;
esac

echo $$ > /var/run/runinputlirc.pid

while (true) do
        . /etc/rc.config

        export LANG
        export LC_ALL=$LANG

        starttime=`date +%s`

        # starte inputlirc
        eval /usr/sbin/inputlircd -f $INPUTLIRC_ARGS

        sleep 1

        test -e /tmp/inputlirc_stop && break

        echo -n "inputlirc exits at "; date

        killproc "/usr/sbin/inputlircd" 0

        test -e /tmp/inputlirc_stop -o "$norestart" = "1" && break

        # schnelle wiederholte Neustarts verzoegern
        if [ $starttime -gt $(( `date +%s` - 15 )) ]; then
                sleep 10 # waiting for inputlirc
        fi
done

rm -f /var/run/runinputlirc.pid /tmp/inputlirc_stop

--- End code ---

MarMic hat ja nun auch die gleiche MCE Fernbedienung wie ich. Werde mit Ihm am Montag Abend meine Konfiguration besprechen. Dann kann er ja die

clausmuus:
Hi,

das beenden einer Shell beendet nicht die eingeschlossenen Prozesse. In meinem Script wird jedoch nicht nur die Shell sondern auch der inputlircd beendet (wenn ich nict vergesen hatte das zu schreiben).

Von Daher müsste meine Lösung ebenso wie Deine funktionieren.

Claus

clausmuus:
Auch wenn wir das irgendwann schon mal besprochen/geklärt hatten, es sind einfach zu viele Baustellen gleichzeitig, um den

clausmuus:
OK, ich hab's mal schnell selber nachgelesen. Wenn Ich's richtig verstanden habe, werden Tastatur Events von ner Fernbedienung als Lirc Events bereitgestellt, ohne das zusätzlich nen Lirc Deamon laufen muss.
Da dafür keine /etc/lircd.conf benötigtwird, greift das eingesetzte Script zur

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version