【问题标题】:Simultaneous writing in a file using pipes in linux在linux中使用管道同时写入文件
【发布时间】:2015-05-10 13:01:22
【问题描述】:

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

  • 先读取文件名.txt,写入person.txt。
  • 第二次读取 surnames.txt 并写入 person.txt。

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

【问题讨论】:

  • 您想要两个程序,还是想要一个程序分叉并运行两个进程?我怀疑是后者。
  • 两个不同的程序。
  • 所以这不是使用fork的练习吗?
  • 不,这是一个使用命名管道在两个不同程序之间进行通信的练习。

标签: c linux file pipe system-calls


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 2010-10-16
    相关资源
    最近更新 更多