Re: fcntl(HANDLE, F_GETLK,&fl) with perl
Bill Allombert <allomber@math.u-bordeaux.fr> writes:
> Hello Debian-devel,
>
> I try to code the following in perl
>
> struct flock fl;
> if (fcntl(fd,F_GETLK,&fl) == -1)
>
> to query the dpkg lock.
>
> I have tried the above
>
> fcntl DPKG_LOCKFILE,F_GETLK, \%fl;
>
> but it does not seems to work. In fact the documentation
> is unclear whether a struct flock can be passed at all
> (some form of fcntl use a long arg instead).
You have to pack the structure by hand. This works for me:
use Config;
my $packspec = $Config{uselargefiles} ? "ssqql" : "sslll";
my $lk = "";
fcntl DPKG_LOCKFILE,F_GETLK,$lk;
my ($l_type, $l_whence, $l_start, $l_len, $l_pid) = unpack($packspec, $lk);
Phil.
Reply to: