【发布时间】:2013-03-28 04:16:56
【问题描述】:
我正在用 C 语言实现一个 C 预处理器...
我有三个功能:
- 三字替换功能
- 线拼接功能
- 评论删除功能
但是,这些函数在文件上单独工作,即
第一个函数将获取一个文件并替换生成 temp-file1 作为输出的三元组
第二个函数将 temp-file1 作为输入并拼接行并生成另一个 temp-file2。
第三个函数将 temp-file2 作为输入并删除注释并生成另一个 temp-file3。
现在主要的预处理任务将在 temp-file3 上执行,并将生成一个 .i 文件作为最终输出。
现在,我有 3 个选择:
- 使用临时文件
- 使用管道
- 使用字符串代替中间临时文件或管道(即整个临时文件 1、2 和 3 将是三个大字符串!!)
我有三个疑问...
- 选项 1 的效率似乎低于选项 2
- 选项 2 似乎很完美,但我会受到那个未命名管道的大小的限制吗? (因为我有 单个进程,即函数 1 2 和 3 将依次调用)如果临时输出大小 > 管道的总容量怎么办?
- 选项 3... 是否比前两个更高效、更容易?
请告诉我,我应该选择哪个选项?
【问题讨论】:
-
通过管道连接的进程并发运行,而不是顺序运行。所以管道缓冲区的大小不是问题。
标签: string pipe pipeline c-preprocessor temporary-files