#!/bin/sh trap ' exit ' 1 2 3 15 trap ' fuser -k $lck ; rm -f $lck ' 0 lck=`mktemp -t lckXXXXXX` cp lck $lck chmod +x $lck rm -f lck-filename function f1() { while : do $lck lck-filename 1 sleep 1 done } function f2() { while : do $lck lck-filename 0 done } function f3() { while : do $lck -r lck-filename 0 done } function f4() { while : do $lck -r -t lck-filename 0 done } while : do ( f1 & f2 & f3 & f4 ) 9<$lck & sleep 5 fuser -k $lck sleep 2 echo -n write lock test: lck -t lck-filename 0 || exit done