A program "write.pl" continue to generate data to test.db, another program read.pl continuously from the test.db read data. When the data test.db is 1 to 30, but only read.pl read 1 to 9,
after that always show 9.
I want to run write.pl at the same time running read.pl, rather than wait until the write.pl runs, and then run read.pl.
Procedures are as follows, thank you!
#!/usr/bin/perl -w
use warnings;
use BerkeleyDB;
$|=1;
my $env=new BerkeleyDB::Env
-Home=>'/home/www',
-Flags=>DB_CREATE|DB_INIT_MPOOL
|| die;
my %hash;
my $db=tie(%hash,"BerkeleyDB::Btree",
-Filename=>"test.db",
-Flags=>DB_CREATE,
-Env=>$env)
|| die;
for(1..30){
$hash{$_}=$_;
sleep 2;
}
untie $db;
#!/usr/bin/perl -w
use warnings;
use BerkeleyDB;
$|=1;
my $env=new BerkeleyDB::Env
-Home=>'/home/www'
|| die;
my %hash;
my $db=tie(%hash,"BerkeleyDB::Btree",
-Filename=>"test.db",
-Env=>$env)
|| die;
my $k;
my $v;
my $cursor = $db->db_cursor();
while(1){
my $status=$cursor->c_get($k, $v, DB_NEXT);
if($status != 0){
;
}
else{
print "$k\t$v\n";
}
}
untie $db;