【问题标题】:Is it possible to write and read from a text file with two programs simultaneously是否可以同时使用两个程序从文本文件中写入和读取
【发布时间】:2017-02-23 10:48:59
【问题描述】:

如果我有一个在 c 或 c++ 中写入特定文本文件的程序和一个从同一文本文件读取的程序,我是否可以同时使用这两个程序,以便第一个程序将新数据写入文本文件,其他程序可以读取并检测更改?

任何帮助将不胜感激。

【问题讨论】:

  • 使用管道代替文件进行进程间通信
  • 是的,这就是为什么您可以同时在多个文本编辑器中打开一个文本文件的原因。
  • @someone_smiley:不,不是。这不是文本编辑器的工作方式。
  • 同时,不是真的,但是您可以锁定文件(或文件的一部分)并在其他程序中等待直到锁定被释放,然后读取它。查看here 以获取有关 Windows 和 C++ 的示例。
  • 是的,这是可能的。这也很难可靠地执行,因为两个进程以及文件数据和元数据中的各种缓存效果都会使检测新写入的数据变得困难。阅读此IBM Redbook 并搜索“read-behind-write”。

标签: c++ c file file-writing


【解决方案1】:

写入文件:

if(fp)
{
    // fp -> handle to the file
    fputs("Satya Pawan Kartik", fp);
    fclose(fp);
}

从文件中读取:

for(;;)
{
    // fp -> handle to the file
    while(fgets(line, sizeof line, fp))
    {
        printf("%s\n", line);
    }
}

假设写入文本文件的程序称为write,读取文件的程序称为read

read 显然永远运行。执行write 会显示它对read 的文本文件所做的更改。如果需要,write 可以修改为永远运行并通过for loop counter 显示由它编写的行。在read 中可以明显看到相同的更改。

所以是的,可以同时使用 2 个程序进行读写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 2016-11-19
    • 2012-06-29
    • 1970-01-01
    • 2021-04-29
    相关资源
    最近更新 更多