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

  • From: ianezz@xxxxxxxxxx
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Wed, 29 Jan 2003 11:50:35 +0100

Luca Bigliardi, pigiando tasti a caso sul citofono, ha scritto:

 > Non ho capito la scelta di un link simbolico al posto della creazione di
 > un file vero e proprio

link(2), che e` la chiamata di sistema usata da ln, ha la simpatica
proprieta` che o ha successo e crea il link, o fallisce e ritorna
errore, e per design di Unix e` garantita essere atomica (o tutto o
niente).

Viceversa, testare prima se il file non esiste e poi crearlo (quando
ottieni il lock) non e` atomico. Ovvero:

   if [ ! -f lockfile ]; then
       touch lockfile
   fi

Tra le prime due righe c'e` posto (piccolo, ma c'e`) per una race
condition.

Una discussione piu` estesa la trovi in Advanced Programming for the
Unix Environment di Stevens. Alla fine della giornata, l'unico modo di
avere in maniera portabile dei lock su Unix che funzionino anche via
NFS e` quello di usare link simbolici.

 > > ln -s /  "/tmp/lockdir/lock" >/dev/null 2>&1
 > 
 > non ho capito dove stai redirigendo lo stderr, al file descriptor 1?

Precisamente, e il file descriptor 1 finisce in /dev/null. 
E` il modo POSIX di farlo [1], mentre la sintassi che usi tu fa la
stessa cosa, ma va solo con Bash.

----

[1] E` perche` in quest'ultimo mese sto facendo qualche chilo di
    script di shell che devon funzionare indifferentemente su HP-UX,
    Solaris e Linux (e magari anche AIX, si sa mai), per cui l'unico
    fattor comune e` POSIX (e, volendo, anche la Korn Shell, ma con
    quel tanto uso POSIX e funziona anche su Linux con Bash invocata
    come /bin/sh)

-- 
 |   \    \  | ___|_  |_  | 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: