Sunday, January 11, 2009

File Locking

File locking di UNIX menggunakan system call flock( ). Di Linux fungsi ini di panggil dengan cara mendefinisikan mode lock yang akan di gunakan.
int flock (int fd, int operation);
Fungsi ini didefinisikan di sys/file.h, fd adalah file descriptor yang telah diakses dengan open( ), operation adalah parameter operasi yang akan diberlakukan, ini bisa berupa salah satu perintah di bawah ini:

LOCK_SH: Shared lock, lock bisa dipunya oleh beberapa proses (lebih dari satu).
LOCK_EX: Exclusive lock, lock hanya dimiliki oleh satu proses.
LOCK_UN: Menonaktifkan lock.

flock( ) akan diturunkan ke proses turunan yang bisa dibuat seperti fork( ) atau dup( ) system call. EAGAIN akan di set sebagai errno jika file tersebut sedang dalam status lock dengan return value -1 (UNIX way bro ;)).

Fungsi ini juga bisa mengakibatkan block pada file descriptor, gunakan nonblocking mode dengan ORing LOCK_NB misalnya:
int op = LOCK_NB | LOCK_EX;
Sory, ga ada code.

%man 2 flock -> Complete resources.