On Sep 19 19:30, BJ wrote: > I have a file locking problem that is solved under Mac and Linux using > fcntl: > int lockRepFile (int fd, char lock, size_t from, size_t length) { > struct flock fl; > > fl.l_start = from; > fl.l_len = length; > fl.l_pid = 0; > > if (lock == 'r') fl.l_type = F_RDLCK; > else if (lock == 'w') fl.l_type = F_WRLCK; > else if (lock == 'u') fl.l_type = F_UNLCK; > fl.l_whence = SEEK_SET; > > return (fcntl(fd, F_SETLKW, &fl)); > } > > Now, unfortunately this hangs occasionally using cygwin - gcc. > > I would appreciate any comments and suggestions on how debug this and how to > improve the performance i.e. stop it from hanging...
F_SETLKW is supposed to hang if the lock is held by another application. Use F_SETLK instead. Apart from that, Cygwin has a problem in that Windows doesn't support advisory locks as are default on Linux and BSD. Windows only supports mandatory locking. So far Cygwin's fcntl uses Window's mandatory locking, it doesn't implement its own advisory locking. Maybe that's your problem. If none of the above helps, maybe a more detailed problem report with a reproducible testcase might be the way to go. See http://cygwin.com/problems.html Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/