【问题标题】:C open file multiple timesC 多次打开文件
【发布时间】:2023-04-10 14:54:02
【问题描述】:

我有一个用fopen 打开的文件。有一种方法可以重新打开同一个文件(当它打开时)但有一个不同的搜索? (所以我可以独立使用 fread)

【问题讨论】:

  • 是的,但你为什么不试试呢? (实际上可能取决于操作系统。)
  • 如果您想读取文件中的多个偏移量,mmap() 也可能是一个选项,具体取决于您的操作系统。然后你可以使用内存地址索引文件。
  • @GeorgSchölly 在具有未定义/未指定/实现定义行为的语言中,这通常是一个非常糟糕的建议。
  • @BoBTFish:你是对的。完全没有想到这一点。感谢您的有用提示。 :)

标签: c fopen


【解决方案1】:

如果你继续阅读没有问题。

在文件中写入时要小心,特别是如果您有 2 个线程同时对文件进行读/写访问

如果你的代码是这样的

FILE *fp1, *fp2;

fp1 = fopen("file", "r");
fp2 = fopen("file", "r");

那么您在同一个文件中有 2 次搜索。并且seek的位置是独立的。从fp1 读取对fp2 没有任何影响

【讨论】:

  • @polslinux 另一种选择(可能更稳定的选择)是创建一个维护每个搜索点的结构,并使用一个函数从任一头读取。
  • 所以没有问题。您可以多次打开文件并同时进行多次搜索
  • 用新的文件描述符打开文件,否则你会丢失最后一个文件描述符的查找
  • 小心,它是实现定义的,见:stackoverflow.com/a/50114472/9305398
猜你喜欢
  • 2017-03-28
  • 1970-01-01
  • 2010-11-21
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多