【发布时间】:2010-05-11 10:47:53
【问题描述】:
我已经写了这两个程序。一个程序是同时将内容写入文本文件。另一个程序同时读取该内容。
但是两个程序应该同时运行。对我来说,程序是正确写入文件。但是另一个程序没有读取该文件。
我知道一旦写入过程完成,硬盘中就只有数据了。然后另一个进程可以读取数据。
但我希望在单个文件中使用不同的进程同时读取和写入。我怎样才能做到这一点?
请帮助我。 以下代码将内容写入文件中
sub generate_random_string
{
my $length_of_randomstring=shift;# the length of
# the random string to generate
my @chars=('a'..'z','A'..'Z','0'..'9','_');
my $random_string;
foreach (1..$length_of_randomstring)
{
# rand @chars will generate a random
# number between 0 and scalar @chars
$random_string.=$chars[rand @chars];
}
return $random_string;
}
#Generate the random string
open (FH,">>file.txt")or die "Can't Open";
while(1)
{
my $random_string=&generate_random_string(20);
sleep(1);
#print $random_string."\n";
print FH $random_string."\n";
}
以下代码是读取内容。这是另一个过程
open (FH,"<file.txt") or die "Can't Open";
print "Open the file Successfully\n\n";
while(<FH>)
{
print "$_\n";
}
【问题讨论】:
-
你已经尝试过什么。你能分享一下你试过的代码吗?
-
尝试非阻塞模式读取文件
-
您可能希望先在写入程序中关闭文件,然后再在读取程序中打开文件。您如何确保仅在写入后发生读取?
-
可能与您正在做的事情相关:stackoverflow.com/questions/1425223/…
标签: perl