[Linuxtrent] Re: variabile ultraglobale, e' possibile?

  • From: ianezz@xxxxxxxxxx
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Wed, 29 Jan 2003 10:09:42 +0100

Usando la tastiera di Luca Bigliardi, uno sconosciuto ha scritto:

 > ho fatto uno script di shell che puo' essere lanciato da piu' utenti e
 > devo far in modo di evitare corse critiche.

Quindi ti serve di far un lock.

 > Per ora ho messo due righe che creano un file quando l'utente entra in
 > zona critica e poi che lo rimuove quando esce.

Che e` quasi La Cosa Giusta(TM). 

La mia versione della "Cosa Giusta(TM)" fattibile con uno script di
shell consisterebbe nel creare un link simbolico in una posizione
nota. Se la creazione ha successo, hai ottenuto il lock, se fallisce
invece sono altri ad avere il lock.

Esempio per rendere l'idea:

   function lock {

       [ ! -d /tmp/lockdir ] && mkdir /tmp/lockdir

       case "$1" in 

       acquire)
           while true; do
               ln -s /  "/tmp/lockdir/lock" >/dev/null 2>&1

               if [ $? -eq 0 ]; then
                   break
               fi
               sleep 1
           done
           ;;
       release)
           rm -f "/tmp/lockdir/lock" >/dev/null 2>&1
           ;;
       esac
   }
   
   # In caso di terminazione anomala, rilascia il lock.
   trap "lock release" EXIT
   
   # Acquisisci il lock 
   lock acquire 
      ...
   # Rilascia il lock
   lock release


Questo approccio e` del tutto analogo a quello usato dal sistema in
/var/lock... 

 > come posso creare una variabile da una shell e fare in modo
 > che sia visibile in tutto il sistema?
 
Non puoi. ;-)
 

-- 
 |   \    \  | ___|_  |_  | ianezz AT sodalia.it
 |  _ \  | \ | _|    /   /  Visita il LinuxTrent a
_|_/  _\_|  _|____|___|___| http://www.linuxtrent.it
-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: