使用linux中的管道同时写入文件

时间:2015-05-10 13:01:23

标签: c linux file pipe system-calls

我有一个文件names.txt Pop,Jack和一个文件surnames.txt Ioan,Gry。我需要获得以下输出,person.txt,Pop Ioan,Jack Gry。我必须创建两个程序:

  • 首先从文件names.txt中读取并写入person.txt。
  • 第二次阅读surnames.txt并写入person.txt。

我需要使用管道进行同步。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

每个程序都会打开一个命名管道进行读取,一个用于写入,person.txt用于追加(或只是写入stdout),以及相应的输入文件(或从stdin读取)。一个程序,可能由命令行arg指定,将从立即读取一行并将其写入输出开始,然后将一个字节写入一个管道,然后阻止从另一个管道读取。另一个程序在第一个管道上等待字节,然后在将一个字节写入另一个管道之前写入其文本和换行符。所以你只是传递一个令牌(写入管道的字节)来同步写入。简单地将管道名称作为命令行参数传递给程序可能会很好,然后通过将一个字节写入其中一个管道来启动整个过程,但程序不相同,因为必须编写一个新队。最好的办法是编写一个程序,但使用不同的命令行参数调用它。 (我不知道这是否属于“两个程序”。)