Re: flock() and sendmail
On Fri, 17 Nov 2006 19:54:13 +0100, Kurt Roeckx <kurt@roeckx.be>
wrote:
>I actually see no good reason to want to use flock() over fcntl().
Maybe because the fcntl()
>interface follows the completely stupid semantics of System V and
>IEEE Std 1003.1-1988 (``POSIX.1'') that require that all locks associated
>with a file for a given process are removed when any file descriptor for
>that file is closed by that process. This semantic means that applica-
>tions must be aware of any files that a subroutine library may access.
>For example if an application for updating the password file locks the
>password file database while making the update, and then calls
>getpwnam(3) to retrieve a record, the lock will be lost because
>getpwnam(3) opens, reads, and closes the password database. The database
>close will release all locks that the process has associated with the
>database, even if the library routine never requested a lock on the data-
>base. Another minor semantic problem with this interface is that locks
>are not inherited by a child process created using the fork(2) function.
>The flock(2) interface has much more rational last close semantics and
>allows locks to be inherited by child processes. Flock(2) is recommended
>for applications that want to ensure the integrity of their locks when
>using library routines or wish to pass locks to their children.
http://leaf.dragonflybsd.org/cgi/web-man?command=fcntl§ion=2
Reply to: