我写了两个程序.一个程序将内容同时写入文本文件.另一个程序同时读取该内容.
但是这两个程序应该同时运行.对我来说,程序是正确写入文件.但是另一个程序没有读取文件.
我知道一旦写入过程完成,只有数据将存储在硬盘中.然后另一个进程可以读取数据.
但我希望在单个文件中同时读写不同的进程.我怎样才能做到这一点?
请帮我.以下代码在文件中写入内容
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";
}
Run Code Online (Sandbox Code Playgroud)
以下代码是读取内容的.这是另一个过程
open (FH,"<file.txt") or die "Can't Open";
print "Open the file Successfully\n\n";
while(<FH>)
{ …Run Code Online (Sandbox Code Playgroud) 问候,我想通读文件,进入睡眠状态,然后检查新记录是否写入文件.如果是,我想处理记录,如果没有回去睡觉并稍后再次检查(在永久循环中).
我以为我可以做这样的事情但是在第一次读取文件之后,它似乎永远不会拿起添加到文件中的新记录.
open (LOG, "<log_file") or die ("could not open log_file");
for (; ;)
{
print "Record Number == $.\n";
while ($text=<LOG>)
{
chomp ($text);
print "$text\n";
}
sleep (60);
}
close (LOG);
Run Code Online (Sandbox Code Playgroud)
在最初读取文件之后,上面的脚本只是继续打印文件中最后一条记录的记录号.我看到了一些关于TailFile软件包的问题,但看起来我没有它,而且此时很难加载.我希望有一个vanilla perl解决方案.
提前致谢.
perl ×2