• [^] # Re: Perte d'infos ?

    Posté par (site web personnel, Mastodon) . En réponse à la dépêche Utiliser une des LED d’un Raspberry Pi comme témoin d’enregistrement TV. Évalué à 10.

    C'est parce que tu penses que ce sont des fichiers textes. Beaucoup de fichiers dans Linux ne sont pas des données stockées. Ce sont en fait des interfaces pour communiquer avec le noyau (une API). Tu as peut-être entendu parler de la fameuse philosophie "tout est fichier" avec Linux; cela ne veut pas dire que les logiciels ont des fichiers de configuration en texte ou quelque chose du genre comme certains croient souvent. C'est que les intéractions peuvent se faire aussi simplement que de la manipulation de fichiers. Mais cela reste des interfaces et ce qu'on y écrit peut être différent de ce qu'on y lit. Dans le cas de ce fichier trigger dans l'API "leds", c'est l'équivalent de 2 functions: en lisant le contenu, c'est une fonction de listing des options et aussi qui indique quelle est l'option actuellement sélectionnée; en écriture, c'est une fonction de sélection d'option.

    Petite démo, si je regarde mon ordinateur, qui a un clavier rétro-éclairable:

    $ cat /sys/class/leds/tpacpi::kbd_backlight/trigger
    [none] usb-gadget usb-host rc-feedback kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock AC-online BAT0-charging-or-full BAT0-charging BAT0-full BAT0-charging-blink-full-solid disk-activity disk-read disk-write ide-disk mtd nand-disk panic wacom_battery_0-online rfkill-any rfkill-none audio-mute audio-micmute rfkill0 rfkill1 rfkill2 bluetooth-power hci0-power rfkill3 phy0rx phy0tx phy0assoc phy0radio rfkill4
    $ echo audio-mute >| /sys/class/leds/tpacpi::kbd_backlight/trigger
    $ cat /sys/class/leds/tpacpi::kbd_backlight/trigger
    none usb-gadget usb-host rc-feedback kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock AC-online BAT0-charging-or-full BAT0-charging BAT0-full BAT0-charging-blink-full-solid disk-activity disk-read disk-write ide-disk mtd nand-disk panic wacom_battery_0-online rfkill-any rfkill-none [audio-mute] audio-micmute rfkill0 rfkill1 rfkill2 bluetooth-power hci0-power rfkill3 phy0rx phy0tx phy0assoc phy0radio rfkill4

    Comme tu le vois, quand je lis à nouveau le fichier, il affiche toujours la liste des triggers, par contre maintenant les crochets sont autour de [audio-mute] pour indiquer que c'est l'option sélectionnée. Et maintenant mon clavier s'éclaire quand je coupe le son, ce qui bien entendu ne me sert à rien et je vais donc m'empresser d'annuler cela. Ahahah. 🤣

    En cherchant sur le web, tu peux aisément trouver les diverses interfaces fichiers pour communiquer avec le noyau. Pour l'interface LED par exemple: https://www.kernel.org/doc/Documentation/leds/leds-class.txt

    En dehors de /sys/, Il existe de nombreuses autres interfaces sous Linux, par exemple dans /proc/, tu as notamment l'ensemble des processus qui tournent (si tu veux faire un logiciel comme top ou ps, c'est à ça que tu dois t'intéresser), ou /dev/ pour les périphériques, etc.

    Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]