flock() applies or removes an advisory lock on the open file fd. Valid operation types are:
Shared lock. More than one process may hold a shared lock for a given file at a given time.
Exclusive lock. Only one process may hold an exclusive lock for a given file at a given time.
Don't block when locking. May be specified (by oring) along with one of the other operations.
A single file may not simultaneously have both shared and exclusive locks.
On success, 0 is returned.
On error, -1 is returned and
the global variable
errno is set appropriately.
The file is locked and the LOCK_NB flag was selected.
fd is not a not an open file descriptor.
While waiting to acquire a lock, the call was interrupted by delivery of a signal caught by a handler.
The operation is invalid.
The implementation ran out of memory for allocating lock records.