同一文件c的同步文件读取

问题描述 投票:-1回答:1

[Background

我正在为该操作系统课程构建的项目背景。该项目将执行一个名为program1的程序,然后该程序将创建9个管道,一个信号量,一个共享内存,该内存对已读取的字符数进行计数,然后接受文件名的命令行参数。在创建所有其他内容之后,第一个程序还将生成9个子代,并将所有先前的信息传递给它们,一个管道从program1到特定的子代,信号量,共享内存位置,文件名。

每个孩子都可以同步访问文件,共享内存。然后,每个孩子将随机读取1-10个字符,然后将共享内存增加该数量。然后,子代将发送当前具有访问权限的程序的名称,以及已读取并写入它们的字符。如果它们到达行尾,它们还将在已写入管道的同一字符串中写入读取字符的总数。当特定的子代执行此操作时,它将执行传递给program1以执行。

当程序一个通过信号量获得执行特权时,它将读取通过所有非阻塞管道发送的字符串。然后将该字符串写入输出文件,然后释放信号量供任何子代再次使用,直到达到eof为止。问题

现在,我已经告诉您程序将如何运行,我有一个问题。在所有读取同一文件的进程之间,我如何准确地跟踪文件指针的位置及其在文件中的位置。我可以将文件指针本身传递给孩子并使用它们吗?还是由于内存空间不同而无法传递?

我猜我可能可以做的是访问共享内存,获取文件的位置,因为共享内存的int值为将会读取多少个字符。话虽这么说,我觉得那将是不必要的开销和可能的计算如果可以用其他方法,可以避免。

c++ file pointers synchronization children
1个回答
0
投票

考虑将您的问题简化为您实际想要回答的主题。 Look here for details

© www.soinside.com 2019 - 2024. All rights reserved.