将文件内容重定向到C中的另一个程序

时间:2016-02-16 01:36:15

标签: c shell stdout stdin io-redirection

制作基本shell,我需要处理文件重定向。具体来说,我对如何将数据提供到sort等程序中的方式感到困惑,例如从文件中提取数据。

命令行上的内容如下所示:

$ sort < test.txt

如何在我用C制作的迷你外壳中实现这种功能?

我认为可能会sortstdin读取,但我想由于只读方面,我无法将文件的内容写入stdin所以我&# 39;我想知道我是如何将这些数据实际上变成像sort这样的东西?我目前正在使用forks,然后使用execvp()来执行程序。

1 个答案:

答案 0 :(得分:2)

您需要使用freopen

它与fopen的工作方式类似。第一个参数是文件名,第二个参数是模式,第三个参数是重定向的文件指针。返回值是新文件指针。所以如果你想重定向stdin:

FILE *fp = freopen("input.txt", "r", stdin);

失败时返回NULL指针,就像fopen一样。