问题描述
cat filename | ./code -n 10
所以它的工作方式与:
./code filename -n 10
或者有什么方法可以通过使用 cat
系统调用直接通过 read
命令读取文件?我在想这样的事情:
read([file from the cat],buf,sizeof(buf));
也许如果我这样做,我就不需要这样做:
fd = open(fileName,O_RDONLY);
read(fd,sizeof(buf));
这是我第一次看到 cat
这样使用;我试图谷歌它,但找不到任何东西。
我是 C 语言和 Unix 的初学者;任何帮助,将不胜感激。
谢谢。
解决方法
这是我在 stackoverflow 上的第一个回答,请耐心等待...
“运行 cat filename 读取指定文件的内容并将它们写入标准输出。| 在两个命令之间表示将左侧命令的标准输出连接到右侧命令的标准输入。” cat and pipe
当您提议从“来自猫的文件”中读取时...
read([file from the cat],buf,sizeof(buf));
...您打算为读取命令 read(2)
指定文件描述符事实证明,您可以传入“0”的文件描述符以从标准输入中读取。
因此,您只需执行以下操作:
read(0,sizeof(buf));