当我遇到这个打印到2行然后退出提示的脚本时,我正在我的虚拟机上玩一些漏洞利用学习技巧,10秒后它在我的提示中打印出来:
[!] Wait for the "Done" message (even if you'll get the prompt back).
user@ubuntu:~/tests$ [+] Done! Now run ./exp
这怎么可能?它是克隆涉及或类似的东西?
答案 0 :(得分:1)
即使您早先收到提示,该程序也会通知您应等待"Done"
消息。
这是因为其他一些进程在后台运行,分离。
您启动的过程已完成,这就是您收到提示的原因。但它产生了另一个(背景)过程,例如通过fork()
或其他一些机制。当您收到提示时,其他进程仍在运行,并且您被告知等待它完成。
如果是,它会将"Done"
打印到从其父级继承的标准输出(stdout
) - 这是(默认情况下)用于启动初始进程的同一终端。 / p>
不是最流畅的设计 - 主要进程可以等待生成的进程在之前完成给你提示回来,因为在你继续之前完成其他进程显然很重要。也许作者不知道该怎么做。 ; - )
答案 1 :(得分:0)
负责打印邮件的流程正在后台运行( background process )。
通常,在后台中运行流程意味着只删除 stdin
,stdout
和stderr
仍然是关联的到实际的父shell,所以输出在终端上仍然可见。