Вы можете скомпилировать flock.c
из пакета util-linux
, но он не будет обладать всей функциональностью версии linux:
flock -n <handle>
не работает, потому чтов AIX дочерние и родительские процессы не разделяют блокировки файлов.
С опцией -w <timeout>
он будет ждать вечно (если время ожидания не равно нулю), так как flock(2)
в AIX не возвращается с errno = EINTR, когда срабатывает таймер (SIGALRM).
Вот пример, который работает в AIX:
#!/bin/sh
if [ "x$1" = x-locked ]; then
shift
else
echo "Trying flock on 'flock.tmp'"
if ! flock --verbose -w 0 flock.tmp "$0" -locked "$@"; then
echo 'Flock failed'
fi
exit
fi
echo "After flock -- sleeping 15 sec"
sleep 15
echo "Exiting"
Вот версия стада, которую я скомпилировал из источника: http://web.axelero.hu/lzsiga/flock.tgz