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