我尝试找到一种方法来读取txt文件,同时我想要不同的进程。例如,我在进程A中,我读取了文件的前10条记录(假设有100条记录)。在过程B中,我想阅读接下来的十条记录。问题是,只有在流程A中我才能获取正确的记录,当我在流程B时,我只需要0.有人可以帮忙吗?提前谢谢!
答案 0 :(得分:0)
如果你深入挖掘特别是在linux环境中,你会发现线程比实现某些需要多线执行的东西时更轻。 我会这样做:
pthread_create()
代替fork()
)。我还将创建一个互斥锁,每个线程在读取文件时都会锁定。read()
调用,缓冲区将保存所有100条记录,过滤掉我需要的10条记录时间点,完成后解锁互斥锁,使用pthread_join()
答案 1 :(得分:0)
这可以使用Inter-process Communication
来完成,shared-memory
主要涉及semaphores
,message-queues
或UNIX Domain Sockets
。有关此方面的基本知识,您可以read my blog
另一种方法是通过在进程之间传递文件描述符。一个进程打开文件,读取10条记录,然后将其传递给第二个进程。这会做同样的事情并将其发送到第一个。整个过程重复进行,直到文件结束。
文件描述符的传递主要使用{{1}}完成,您可以在this answer
中找到与此相关的代码希望这有帮助。