[root@localhost /]# ( ./address_to_char;cat) | ./overflow
( ./address_to_char;cat)如何在这里工作?
与./address_to_char|./overflow什么不同?
./address_to_char和cat的输出作为一个连续的数据./overflow 。
首先,运行./address_to_char ,并将其输出redirect到./overflow的input。
当./address_to_char退出时, cat启动,其输出以相同的方式附加到仍在运行的./overflow进程。
由于cat没有指定文件运行,它从标准input(在这种情况下,您的键盘)读取。
那么圆括号会打开一个子shell,而分号会依次运行这些命令。
所以在这种情况下,你正在运行./address_to_char然后cat在一个子shell中。