UNIX重定向
请问./a.out < ./abc 和 cat < ./abc | ./a.out有什么区别?各自的执行过程是怎样的?
------解决方案--------------------效果一样的吧
都是从文件abc中读取输入
------解决方案--------------------1楼正解
------解决方案--------------------./a.out < ./abc 描述符0重定向到文件./abc
cat < ./abc | ./a.out 父进程描述符0重定向到文件./abc,描述符1重定向到管道Pipe[1].
子进程./a.out的描述符0重定向到管道pipe[0].
最终两个命令效果一样,也就是a.out进程从描述符0读./abc里的数据.
------解决方案--------------------管道会产生一个subshell
------解决方案--------------------效果一样但实现原理不一样