使用是不需专门学的,无非是多用,多看相关的资料。管道、重定向,是从DOS时代就有的,这也是C/C++语言使用“流”数据的原因,诸如scanf()、printf()、getchar()、putchar()之类的函数,实质是向被称为stdin、stdout的虚拟文件读写,是fscanf()、fprintf()等函数的变体(仅仅省略了文件句柄参数,因为函数内定了文件句柄是哪个),所以在控制台上通过交互模式读写数据,本质上就是文件操作,学会这些,就等于懂了文件的处理(加一个参数就是了),很多学C的人,遇到文件相关问题不懂处理,正是不知道这个本质,不会迁移。
管道和重定向,就是省略了键盘交互过程,直接把文件中的数据,用“相当于”缓冲的办法灌入到程序的接收函数中(类似提前键入一大堆数据让程序依次读取),写也是这样,把原本向stdout输出的数据,由重定向文件名打开的文件句柄来替换掉默认的stdout句柄即可。懂了这个原理,就算不用重定向,在程序中用宏或者动态处理,把所有stdout句柄替换成自己指定的文件句柄,就可以随时切换数据输入输出的方向,这是调试程序时经常使用的手段。