+#else
+ struct flock fl;
+
+ if (lock_fd != -1)
+ return -1;
+ lock_fd = open(LOCK_FILE, O_RDWR|O_CREAT, 0600);
+ if (lock_fd == -1)
+ return -1;
+ signal(SIGALRM, noop);
+ alarm(15);
+ memset(&fl, 0, sizeof(fl));
+ fl.l_type = F_WRLCK;
+ fl.l_whence = SEEK_SET;
+ if (fcntl(lock_fd, F_SETLKW, &fl) != 0) {
+ alarm(0);
+ close(lock_fd);
+ lock_fd = -1;
+ return -1;
+ }
+ alarm(0);
+
+ return 0;
+#endif