日期:2014-05-16  浏览次数:20734 次

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
------解决方案--------------------
效果一样但实现原理不一样