gpt4 book ai didi

c++ - 如何检查文件是否已通过其他进程更改?

转载 作者:行者123 更新时间:2023-11-28 03:53:30 25 4
gpt4 key购买 nike

我有两个进程(第一个是 perl 源代码,第二个是 c++ 源代码),它们都使用同一个文件。其中一个逐行写入文件,如果新行附加到文件,另一个从文件中读取。对于知道文件被修改的第二个进程,第一个进程在每次附加后刷新。但是第二个进程只检查要增加的修改时间以开始读取,但实际上在添加新行并刷新文件后并没有改变它的“最后修改时间”。所以需要另一个 aporache 来做到这一点。所以问题来了,如何检测新行是否附加到文件,以开始处理?

这里是这个过程的源代码片段:

1.

open FILE, ">>", $file or die $!;
for($i = 0; $i <= $#ticks; ++$i)
{
print FILE $ticks[$i]."\n";
FILE->flush();
sleep(10);
}
close FILE;

2.

struct stat64 file_info;
if(fstat64(fileno(this->auto_file_ptr.get_file()), &file_info)!=0)
{
//throw error that file have been changed
}
data_file_new_modification_time = 1000LL * file_info.st_mtime;
if(this->data_file_last_modification_time!=data_file_new_modification_time)
{
//processs the file
}

最佳答案

使用 IPC 机制同步您的 C++ 和 Perl 应用程序。为此,您可以使用信号量或互斥量。

关于c++ - 如何检查文件是否已通过其他进程更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4539328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com