聘我网

新概念招聘3.0

bash下的管道命令究竟如何执行的?

vote up0vote downstar
[root@server120 exploit_test]# (./put_string;cat) |./return_input 

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb@
0x400562
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb@
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAb@
0x4062

Segmentation fault (core dumped)

不是很清楚具体的执行过程?

 

1 个答复

vote up0vote downcheck

./put_stringcat的输出作为一个整体作为了./return_inputSTDIN

./put_string退出时,cat开始运行,直到键盘输入EOF(ctrl-d)或者右边./return_input退出(被SIGPIPE杀掉,因为此时左边无处可)。

另外值得注意的是,管道两边的程序都是同时运行的,而不是从左到右,这点可以从cat|echo 1的输出看出来。

链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.