通过许多过程读取相同txt的不同部分

时间:2014-02-12 12:53:00

标签: c fork

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

2 个答案:

答案 0 :(得分:0)

如果你深入挖掘特别是在linux环境中,你会发现线程比实现某些需要多线执行的东西时更轻。 我会这样做:

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

答案 1 :(得分:0)

这可以使用Inter-process Communication来完成,shared-memory主要涉及semaphoresmessage-queuesUNIX Domain Sockets。有关此方面的基本知识,您可以read my blog

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

文件描述符的传递主要使用{{1}}完成,您可以在this answer

中找到与此相关的代码

希望这有帮助。