private static bool TryDoFileLocking(int fd, bool lockFile, FlockOperation? specificFlag = null) { if (fd >= 0) { int res; Errno lastError; do { res = Flock(fd, specificFlag ?? (lockFile ? FlockOperation.LOCK_EX : FlockOperation.LOCK_UN)); lastError = Stdlib.GetLastError(); } while(res != 0 && lastError == Errno.EINTR); // if can't get lock ... return res == 0; } return false; }
private extern static int Flock(int fd, FlockOperation operation);
private extern static int Flock(int fd, FlockOperation operation);