Hi All,
There are 3 different file locking mechanisms in C:
flock
lockf
fcntl
I want to write a Ruby script, which shares files with
a C program using all of these lockings.
As I can see objects with the type File have an flock
method. This is the only one I can use. There is an
fcntl method, but I don’t know how to use it. What
kind of parameters can I pass to fcntl? I want to
implement this code in Ruby for fcntl:
def lock_fcntl(fd)
# struct flock f_lock;
# memset(&f_lock, '\0', sizeof(f_lock));
# f_lock.l_type = F_WRLCK;
# f_lock.l_whence = SEEK_SET;
# f_lock.l_start = 0;
# f_lock.l_len = 0;
# fcntl(fd, F_SETLKW, &f_lock);
end
and I need a lockf-type method too:
def lock_lockf(fd)
# ???
end
Could you show me how to use fcntl, and how to
access lockf from Ruby?
···
–
bSanyI
Saluton!
- Bedo Sandor; 2003-07-15, 12:46 UTC:
There are 3 different file locking mechanisms in C:
flock
lockf
fcntl
I want to write a Ruby script, which shares files with
a C program using all of these lockings.
Maybe ‘filelock’ is what you are looking for (at least it works fine
when sharing mbox files with mutt).
Gis,
Josef ‘Jupp’ Schugt
···
–
N’attribuez jamais à la malice ce que l’incompétence explique !
– Napoléon
have you checked it ‘http://raa.ruby-lang.org/list.rhtml?name=filelock’
out
-r.
Bedo Sandor wrote:
···
Hi All,
There are 3 different file locking mechanisms in C:
flock
lockf
fcntl
I want to write a Ruby script, which shares files with
a C program using all of these lockings.
As I can see objects with the type File have an flock
method. This is the only one I can use. There is an
fcntl method, but I don’t know how to use it. What
kind of parameters can I pass to fcntl? I want to
implement this code in Ruby for fcntl:
def lock_fcntl(fd)
# struct flock f_lock;
# memset(&f_lock, '\0', sizeof(f_lock));
# f_lock.l_type = F_WRLCK;
# f_lock.l_whence = SEEK_SET;
# f_lock.l_start = 0;
# f_lock.l_len = 0;
# fcntl(fd, F_SETLKW, &f_lock);
end
and I need a lockf-type method too:
def lock_lockf(fd)
# ???
end
Could you show me how to use fcntl, and how to
access lockf from Ruby?
–
General Electric - CIAT
Advanced Engineering Center
Rodrigo Bermejo
Information Technologies.
Dial-comm : *879-0644
Phone :(+52) 442-196-0644
mailto:rodrigo.bermejo@ps.ge.com