12345678910111213141516171819202122232425 |
- Frontend Interfaces
- ===================
- This file will try to document some of the interfaces that dpkg makes
- available to frontends or that expects them to use, which are currently
- not covered by any other type of documentation.
- Database Locking
- ----------------
- Any frontend needing to make sure no write operation is currently happening,
- should lock the dpkg database by locking the file «<admindir>/lock» using
- file record locks (i.e. fcntl(2) advisory locking). The whole file should
- be locked, as that's the most portable way to perform this operation; this
- can be achieved by using start=0, len=0 and whence=SEEK_SET.
- Take into account there will be a race condition between the frontend
- unlocking the database and the invoked dpkg locking it again, in which
- another process could lock it.
- In the future this functionality will be available through a shared libdpkg
- library, and all frontends will be expected to switch to that instead,
- because this will fix the aforementioned race condition.
|