将文件内容重定向到 C 中的另一个程序
Redirecting file contents into another program in C
制作基本 shell 并且我需要处理文件重定向。具体来说,我对如何将数据输入 sort
之类的程序感到困惑,例如从文件中输入数据。
命令行上的内容如下所示:
$ sort < test.txt
如何在我自己用 C 语言制作的迷你 shell 中实现这种功能?
我想也许 sort
从 stdin
读取,但我想我不能真正将文件的内容写入 stdin
由于只读方面所以我'我想知道我实际上是如何将这些数据变成 sort
之类的东西的?我目前正在使用 fork,然后使用 execvp()
来执行程序。
您需要使用freopen
。
它的工作原理与 fopen
类似。第一个参数是文件名,第二个参数是模式,第三个参数是要重定向的文件指针。 return 值是新文件指针。所以如果你想重定向标准输入:
FILE *fp = freopen("input.txt", "r", stdin);
它 return 是一个失败时的 NULL 指针,就像 fopen
。
制作基本 shell 并且我需要处理文件重定向。具体来说,我对如何将数据输入 sort
之类的程序感到困惑,例如从文件中输入数据。
命令行上的内容如下所示:
$ sort < test.txt
如何在我自己用 C 语言制作的迷你 shell 中实现这种功能?
我想也许 sort
从 stdin
读取,但我想我不能真正将文件的内容写入 stdin
由于只读方面所以我'我想知道我实际上是如何将这些数据变成 sort
之类的东西的?我目前正在使用 fork,然后使用 execvp()
来执行程序。
您需要使用freopen
。
它的工作原理与 fopen
类似。第一个参数是文件名,第二个参数是模式,第三个参数是要重定向的文件指针。 return 值是新文件指针。所以如果你想重定向标准输入:
FILE *fp = freopen("input.txt", "r", stdin);
它 return 是一个失败时的 NULL 指针,就像 fopen
。