File: README

package info (click to toggle)
posixlock 0.0.1-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny
  • size: 76 kB
  • ctags: 93
  • sloc: ansic: 264; makefile: 99; ruby: 1
file content (85 lines) | stat: -rw-r--r-- 1,632 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
SYNOPSIS: |

  methods to add posix (fcntl based and nfs safe) locking to the builtin File
  class

URLS:
  
  - http://raa.ruby-lang.org/project/posixlock/

  - http://www.codeforpeople.com/lib/ruby/posixlock/

EXAMPLES:

  - |
  
    File.open('even_an_nfs_mounted_file','r+').posixlock File::LOCK_EX

  - |
  
    File.open('even_an_nfs_mounted_file','r+').lockf File::F_LOCK, 0

  - |
  
    open('even_an_nfs_mounted_file','r') do |f|
      f.lockf File::F_LOCKR, 42 
    end

  - |

    f = open 'foo', 'r+'

    if((pid = f.lockf File::F_TEST, 0))
      STDERR.puts "process <#{ pid }> prevents write lock"
    end

  - |

    f = open 'foo', 'r'

    if((pid = f.lockf File::F_TESTR, 0))
      STDERR.puts "process <#{ pid }> prevents read lock"
    end

DOCS:

  - posixlock.c

  - File#posixlock has an identical interface to the builtin File#flock

  - |
    for File#lockf see man (3) lockf
      
    the additional flags

      File::F_LOCKR
      File::F_LOCKW
      File::F_TLOCKR
      File::F_TLOCKW
      File::F_TESTR
      File::F_TESTW

    have the obvious meaning


AUTHOR: |

  ara.t.howard@noaa.gov

BUGS: |

  > 1


HISTORY:

  1.0.0: |
    changed behaviour so that, instead of replacing flock, two new methods are
    added: File#posixlock gives access to read/write locks with an interface
    identical to File#flock, and File#lockf gives access to a lockf impl
    similar to the one posix specifies with added functionality for read
    locks.  the biggest difference between the two methods is that lockf will
    throw errors for errno's like EAGAIN, EACCESS, etc.

  0.0.0: |
    initial version