Mandatory locking suspends a process until the requested file segments are free. Advisory locking returns a result indicating whether the lock was obtained or not: processes can ignore the result and do the I/O anyway. You cannot use both mandatory and advisory file locking on the same file at the same time. The mode of a file at the time it is opened determines whether locks on a file are treated as mandatory or advisory.
Of the two basic locking calls, fcntl(2) is more portable, more powerful, and less easy to use than lockf(3C).fcntl(2) is specified in Posix 1003.1 standard. lockf(3C) is provided to be compatible with older applications.