我正在努力实施more
命令。我想知道如果有管道我该如何理解。例如,如果我从 shell 中输入
cat file1 file2 | more
我怎样才能在 more 的实现中处理这个问题?
并且是实施more
可以开源吗?
实际上,我无法成功读取 stdin。我已经设法执行了更多 file.txt 但不是 cat 文件 |更多的..
我想我应该首先从用户那里读取并放置一个缓冲区而不是打印缓冲区。我的代码包含:
if(argc == 1)
{
fgets(line, 255, 0);
printf("%s", line);
}
但它给出了错误。
更多语法是
more [options] [file_name]
如果您不提供文件名,则more命令获取输入stdin;您可以提供此输入(通过stdin)使用管道,例如:
cat file.txt | more
这会将 cat 命令的输出发送到more。这与执行以下操作相同:
more file.txt
你不需要特别知道是否有管道;您只需要检查文件名是否作为参数传递给more。如果是,则输入被视为文件的内容。如果不是,则认为输入源自stdin.
至于源代码,一些谷歌搜索会带你走很长的路。这是 FreeBSD 的一些旧源代码:
http://svnweb.freebsd.org/base/stable/2.0.5/usr.bin/more/ http://svnweb.freebsd.org/base/stable/2.0.5/usr.bin/more/
或者来自 Ubuntu 存储库的更新源:
http://bazaar.launchpad.net/~vcs-imports/util-linux-ng/trunk/files/head:/text-utils/ http://bazaar.launchpad.net/~vcs-imports/util-linux-ng/trunk/files/head:/text-utils/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)