C语言 通过多个进程读取同一 txt 的不同部分

  • 本文关键字:txt 同部 读取 语言 进程 c fork
  • 更新时间 :
  • 英文 :


我尝试找出一种在不同进程中从 txt 文件中读取的方法。例如,我在进程 A 中,我读取了文件的前 10 条记录(假设有 100 条记录)。在进程 B 中,我想读取接下来的十条记录。问题是,只有在进程 A 中,我才会获取正确的记录,而当我在进程 B 中时,我只获取 0。有人可以帮忙吗?提前感谢!

如果你深入

挖掘,特别是在Linux环境中,你会发现线程比进程轻,当涉及到实现需要多股执行的东西时。我将通过以下方式执行此操作:

  1. 创建一个包含 10 个线程的进程。每个线程将从 TXT 文件中读取 10 条记录。(我需要使用pthread_create()而不是fork())。我还将创建一个互斥锁,每个线程在读取文件时都会锁定它。
  2. 我将使用上述调用创建 Th1 (thread_1),锁定互斥锁,打开文件,读取正在使用read()调用,缓冲区将保存所有 100 条记录,过滤掉我需要的 10 条记录,完成后解锁互斥锁,使用 pthread_join() 结束它
  3. 总共重复步骤 2 10 次,以便我拥有所有记录。

可以使用主要涉及shared-memorysemaphoresmessage-queuesInter-process Communication来完成。有关这方面的基本知识,您可以阅读我的博客

另一种方法是在进程之间传递文件描述符。一个进程打开文件,读取 10 条记录,然后将其传递给第二个进程。这会做同样的事情并将其发送到第一个。整个过程重复,直到到达文件末尾。

文件描述符的传递主要使用 UNIX Domain Sockets 完成,您可以在此答案中找到与此相关的代码

希望这有帮助。

最新更新