+
+ /* Try to lock the file. */
+ if (lockf(lfp, F_TLOCK, 0) < 0) {
+ close(lfp);
+
+ if (errno == EACCES || errno == EAGAIN)
+ Log_fatal("PID file is locked -- uMurmur already running?");
+
+ Log_fatal("Cannot lock PID file: %s", strerror(errno));
+ }
+
+ /* Now that we locked the file, erase its contents. */
+ if (ftruncate(lfp, 0) < 0) {
+ close(lfp);
+ Log_fatal("Cannot truncate PID file: %s", strerror(errno));
+ }
+