home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 April / PCWorld_2001-04_cd.bin / Software / TemaCD / webclean / !!!python!!! / BeOpen-Python-2.0.exe / TEST_FCNTL.PY < prev    next >
Encoding:
Python Source  |  2000-10-12  |  1.1 KB  |  37 lines

  1. #! /usr/bin/env python
  2. """Test program for the fcntl C module.
  3.    Roger E. Masse
  4. """
  5. import struct
  6. import fcntl
  7. import FCNTL
  8. import os, sys
  9. from test_support import verbose
  10.  
  11. filename = '/tmp/delete-me'
  12.  
  13. # the example from the library docs
  14. f = open(filename,'w')
  15. rv = fcntl.fcntl(f.fileno(), FCNTL.F_SETFL, os.O_NONBLOCK)
  16. if verbose:
  17.     print 'Status from fnctl with O_NONBLOCK: ', rv
  18.     
  19. if sys.platform in ('netbsd1', 'Darwin1.2',
  20.                     'freebsd2', 'freebsd3', 'freebsd4', 'freebsd5',
  21.                     'bsdos2', 'bsdos3', 'bsdos4',
  22.                     'openbsd', 'openbsd2'):
  23.     lockdata = struct.pack('lxxxxlxxxxlhh', 0, 0, 0, FCNTL.F_WRLCK, 0)
  24. elif sys.platform in ['aix3', 'aix4', 'hp-uxB']:
  25.     lockdata = struct.pack('hhlllii', FCNTL.F_WRLCK, 0, 0, 0, 0, 0, 0)
  26. else:
  27.     lockdata = struct.pack('hhllhh', FCNTL.F_WRLCK, 0, 0, 0, 0, 0)
  28. if verbose:
  29.     print 'struct.pack: ', `lockdata`
  30.     
  31. rv = fcntl.fcntl(f.fileno(), FCNTL.F_SETLKW, lockdata)
  32. if verbose:
  33.     print 'String from fcntl with F_SETLKW: ', `rv`
  34.  
  35. f.close()
  36. os.unlink(filename)
  37.