Hi Folks,
I posted this awhile back, but then had problems with my mailer and saw no 
responses.
I have also attempted to clarify the froblem.

When I run the following program under Linux ( Red Hat 7.1, Perl 5.6.0 ) it 
works fine.
If I run the program under Solaris, it fails with "Bad File Number" ( 
EBADF).  I have two
Solaris machines, a Sun 450 running Solaris 2.6 on which I have compiled 
Perl 5.6.1 using
gcc 2.8.1, and a Compaq running Solaris 8i with the installed Perl 
5.005003.  In config.h
on both Solaris boxes HAVE_FLOCK is not defined, but HAVE_FCNTL is defined. 
 I thought that Solaris perl emulated flock() using fcntl(), but the 
emulation appears not to work.

Do I need to define any special flags when I compile perl in order to get 
the emulation?

Unfortunately I am not in a position to upgrade my gcc or my OS at the 
present time.

Thanks,
Smiddy

P.S. As you can probably tell from the commented out line, I have also 
tried:

        flock( fileno( dataHandle ), LOCK_EX );

#!/usr/bin/perl -w

use strict;
use Fcntl qw( :DEFAULT :flock );

# Put your data file name here.
my $datafile = './test_file';

open( dataHandle, "< $datafile" ) or
        die( "Cannot open data file $datafile: $!" );

# my $file_num = fileno( dataHandle );

flock( dataHandle, LOCK_EX ) or
        die( "Cannot lock data file $datafile: $!" );

print "Ready to use file $datafile.\n";

close( dataHandle );
exit( 0 );



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to