# :mod:fcntl --- The :func:fcntl and :func:ioctl system calls

This module performs file control and I/O control on file descriptors. It is an interface to the :c:func:fcntl and :c:func:ioctl Unix routines.

All functions in this module take a file descriptor fd as their first argument. This can be an integer file descriptor, such as returned by sys.stdin.fileno(), or a file object, such as sys.stdin itself, which provides a :meth:fileno which returns a genuine file descriptor.

The module defines the following functions:

Examples (all on a SVR4 compliant system):

import struct, fcntl, os

f = open(...)
rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NDELAY)

lockdata = struct.pack('hhllhh', fcntl.F_WRLCK, 0, 0, 0, 0, 0)
rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)


Note that in the first example the return value variable rv will hold an integer value; in the second example it will hold a string value. The structure lay-out for the lockdata variable is system dependent --- therefore using the :func:flock call may be better.