Linux, fcntl, F_SETLEASE and signals

John Lenton jlenton at gmail.com
Wed Jul 21 13:09:25 EDT 2004


On Wed, 21 Jul 2004 14:03:56 -0300, John Lenton <jlenton at gmail.com> wrote:
> On Wed, 21 Jul 2004 12:27:57 -0400, Chris Green <cmg at dok.org> wrote:
> > Hey folks,
> >
> > Is there anyway for a signal handler in python to get the information
> > from a 3 argument signal handler rather than just the signal number
> > and stack frame?
> >
> > I've got an application where I have to check for F_SETLEASE on a file
> > in python on Linux 2.4.  What this does is tells the kernel to notify
> > the current process with SIGIO that a particular file descriptor is being
> > modified by another process.
> >
> > >>> import fcntl
> > >>> f = open(".zshrc", "r+")
> > >>> fcntl.fcntl(f, fcntl.F_SETLEASE, fcntl.F_WRLCK)
> > 0
> 
> would this be close enough?
> 
> Python 2.3.4 (#2, Jul  5 2004, 09:15:05)
> [GCC 3.3.4 (Debian 1:3.3.4-2)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import fcntl
> >>> import ctypes
> >>> libc = ctypes.cdll.LoadLibrary('/lib/libc.so.6')
> >>> f = open("/home/john/.bashrc")
> >>> libc.fcntl(f.fileno(), fcntl.F_SETLEASE, fcntl.F_WRLCK)
> 0
> >>>
> >>> # now someone cats .bashrc
> ... I/O possible

sorry, I got the wrong end of the stick. But ctypes lets you do what
you want, anyways. Portable as Linux :)

-- 
John Lenton (jlenton at gmail.com) -- Random fortune:
bash: fortune: command not found



More information about the Python-list mailing list