lock data in a file
#include <unistd.h> int lock( int filedes , unsigned long offset, unsigned long nbytes );
The lock() function locks nbytes amount of data in the file designated by filedes, starting at byte offset in the file. The file must be opened with write access to lock it.
Advisory locks are ignored by the following functions:
Multiple regions of a file can be locked, but no overlapping regions are allowed. You cannot unlock multiple regions in the same call, even if the regions are contiguous. All locked regions of a file should be unlocked before closing a file or exiting the program.
errno, fcntl(), locking(), open(), sopen(), unlock()
#include <stdio.h> #include <fcntl.h> #include <unistd.h> void main() { int filedes ; char buffer[20]; filedes = open( "file", O_RDWR ); if( filedes != -1 ) { if( lock( filedes , 0L, 20L ) ) { printf( "Lock failed\n" ); } else { read( filedes , buffer, 20 ); /* update the buffer here */ lseek( filedes , 0L, SEEK_SET ); write( filedes , buffer, 20 ); unlock( filedes , 0L, 20L ); } close( filedes ); } }
WATCOM
All (except Netware, DOS/PM)