Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

verrou pour exécution exclusive du plus récent

12 réponses
Avatar
David LE BOURGEOIS
Bonjour à tous.

J'utilise osd_cat pour afficher le résultat d'événements
concurrents, à un même endroit de l'écran.

L'affichage des informations est persistent pendant un certain
temps. Mais le délai entre deux événements peut être plus court. Et
donc, les deux inscriptions se superposent à l'écran.

Un kill sur le processus précédent en cours d'exécution permet
d'interrompre l'affichage, avant d'en lancer un nouveau. Ainsi ai-je
l'idée d'utiliser un fichier verrou, contenant le pid du processus
précédent et permettant au nouveau de le tuer avant affichage.

Voici donc le script shell, dans lequel le résultat des
événements est représenté par la date courante :

---8<----------
#!/bin/sh

NAME="$(basename "$0")"
LOCK="/tmp/$NAME.pid"
OSD_OPTS="-d 5"

if [ -f "$LOCK" ]
then
kill "$(cat "$LOCK")"
fi
date | osd_cat $OSD_OPTS & PID=$!
echo "$PID" > "$LOCK"
wait "$PID"
---8<----------

Plusieurs exécutions simultanées du script provoquent le
comportement voulu, et seule la dernière monopolise l'affichage.

Reste donc la gestion de la suppression du fichier verrou. Mais
l'ajout d'un « rm "$PID" » à la fin du script fait capoter le mécanisme.

Je m'en sors en remplaçant la dernière ligne par un celle-ci :
« wait "$PID" && rm "$LOCK" ». Mais si le dernier osd_cat renvoie un
code retour d'erreur, pour une raison quelconque, le fichier verrou
n'est pas supprimé.

Avez-vous des suggestions ?

Merci d'avance.

--
David LE BOURGEOIS
E-mail : david.lebourgeois (at) free.fr
Jabber : david.lebourgeois (at) jabber.fr
PGP : http://david.lebourgeois.free.fr/pgp/

2 réponses

1 2
Avatar
Nicolas George
David LE BOURGEOIS wrote in message
<46b8f397$0$642$:
C'est vrai que les messages d'événements que j'ai pris jusqu'à
maintenant sont date et echo, et ne produisent qu'une seule ligne.
Mais actuellement j'ai besoin de 2 lignes d'affichage, voire peut-être
3 dans le futur.


Si tu affiches toujours en une fois un nombre de lignes égal à la valeur que
tu donnes à -l, ça devrait être bon.

Avatar
David LE BOURGEOIS
David LE BOURGEOIS wrote in message
<46b8f397$0$642$:
C'est vrai que les messages d'événements que j'ai pris jusqu'à
maintenant sont date et echo, et ne produisent qu'une seule ligne.
Mais actuellement j'ai besoin de 2 lignes d'affichage, voire peut-être
3 dans le futur.


Si tu affiches toujours en une fois un nombre de lignes égal à la valeur que
tu donnes à -l, ça devrait être bon.


Oui. Pour l'instant ça me convient. Je verrai plus tard pour un nombre
de lignes variables.

Merci.

--
David LE BOURGEOIS
E-mail : david.lebourgeois (at) free.fr
Jabber : david.lebourgeois (at) jabber.fr
PGP : http://david.lebourgeois.free.fr/pgp/


1 2