相关疑难解决方法(0)

使用不同的进程在同一文件中进行读写

我写了两个程序.一个程序将内容同时写入文本文件.另一个程序同时读取该内容.

但是这两个程序应该同时运行.对我来说,程序是正确写入文件.但是另一个程序没有读取文件.

我知道一旦写入过程完成,只有数据将存储在硬盘中.然后另一个进程可以读取数据.

但我希望在单个文件中同时读写不同的进程.我怎样才能做到这一点?

请帮我.以下代码在文件中写入内容

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)

perl

5
推荐指数
1
解决办法
3932
查看次数

如何从Perl中不断更新的文件中读取?

问候,我想通读文件,进入睡眠状态,然后检查新记录是否写入文件.如果是,我想处理记录,如果没有回去睡觉并稍后再次检查(在永久循环中).

我以为我可以做这样的事情但是在第一次读取文件之后,它似乎永远不会拿起添加到文件中的新记录.

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

3
推荐指数
2
解决办法
2369
查看次数

标签 统计

perl ×2