gpt4 book ai didi

c - 在 C 中,追加到打开的文件以供 Windows 控制台和 Linux 上的另一个程序读取

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:46 26 4
gpt4 key购买 nike

我有两个不同的 C 程序在同一台机器上运行。第一个程序,称为 FileReader,打开一个文件进行读取,并保持打开状态。我希望另一个程序 FileAppender 定期使用“a”(追加)模式打开文件、追加数据,然后关闭文件。

但我不希望 FileReader 在 FileAppender 需要追加数据时关闭文件。

我的问题:首先,这完全可以做到吗?如果可以,对于 Windows 控制台程序和 Linux,它能否以一种可移植、可靠的方式来完成?我问“可靠”的原因是因为我担心在测试中它可能有效,但不一定可靠。

其次,如果可以做到这一点,在可移植性和可靠性方面,FileReader 程序如何知道是否已附加数据?一个想法是对 EOF 执行 fseek,但担心 FileAppender 仍在向文件写入数据的过程中的情况。

最佳答案

Windows 不存在注释中描述的 Linux/UNIX -tail 命令,但是,即使没有该命令,也有多种方法可以执行此操作。这是我用过的,应该可以跨平台工作:

首先认识到您正在描述一个共享(文件系统)资源,它只能被访问任何时候一个过程。这两个(或更多)应用程序需要某种信号量(信号)方法来通过检查另一个应用程序的存在来通知目标文件的当前状态。为此,我使用了一个 Token 文件,它对我很有效。 token 文件只是一个具有唯一名称的文件,表示权限 访问目标文件,目标文件在哪里/strong> 文件被多个进程编辑。进程(应用程序)可以检查此 token 文件是否存在。如果 token 存在,则目标文件正忙,不应访问。如果 token 不存在,则创建它,然后访问目标文件。完成附加到目标后关闭 token 。

简单的概念流程:

Process 1
while(token exists)
{
//Sleep(20)
}
create token
Open target file for append
write to target file
close target file
close token

Process 2
while(token exists)
{
//Sleep(20)
}
create token
Open target file for append
write to target file
close target file
close token

关于c - 在 C 中,追加到打开的文件以供 Windows 控制台和 Linux 上的另一个程序读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30627991/

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