制作基本shell,我需要处理文件重定向。具体来说,我对如何将数据提供到sort
等程序中的方式感到困惑,例如从文件中提取数据。
命令行上的内容如下所示:
$ sort < test.txt
如何在我用C制作的迷你外壳中实现这种功能?
我认为可能会sort
从stdin
读取,但我想由于只读方面,我无法将文件的内容写入stdin
所以我&# 39;我想知道我是如何将这些数据实际上变成像sort
这样的东西?我目前正在使用forks,然后使用execvp()
来执行程序。
答案 0 :(得分:2)
您需要使用freopen
。
它与fopen
的工作方式类似。第一个参数是文件名,第二个参数是模式,第三个参数是重定向的文件指针。返回值是新文件指针。所以如果你想重定向stdin:
FILE *fp = freopen("input.txt", "r", stdin);
失败时返回NULL指针,就像fopen
一样。