如何解释这个命令链接?

[root@localhost /]# ( ./address_to_char;cat) | ./overflow 

( ./address_to_char;cat)如何在这里工作?

./address_to_char|./overflow什么不同?

./address_to_charcat的输出作为一个连续的数据./overflow

  1. 首先,运行./address_to_char ,并将其输出redirect到./overflow的input。

  2. ./address_to_char退出时, cat启动,其输出以相同的方式附加到仍在运行的./overflow进程。

    由于cat没有指定文件运行,它从标准input(在这种情况下,您的键盘)读取。

那么圆括号会打开一个子shell,而分号会依次运行这些命令。

所以在这种情况下,你正在运行./address_to_char然后cat在一个子shell中。