从后台进程打印到linux提示符

时间:2016-07-26 09:58:19

标签: linux shell background-process

当我遇到这个打印到2行然后退出提示的脚本时,我正在我的虚拟机上玩一些漏洞利用学习技巧,10秒后它在我的提示中打印出来:

[!] Wait for the "Done" message (even if you'll get the prompt back).
user@ubuntu:~/tests$ [+] Done! Now run ./exp

这怎么可能?它是克隆涉及或类似的东西?

2 个答案:

答案 0 :(得分:1)

即使您早先收到提示,该程序也会通知您应等待"Done"消息。

这是因为其他一些进程在后台运行,分离。

您启动的过程已完成,这就是您收到提示的原因。但它产生了另一个(背景)过程,例如通过fork()或其他一些机制。当您收到提示时,其他进程仍在运行,并且您被告知等待它完成。

如果是,它会将"Done"打印到从其父级继承的标准输出(stdout) - 这是(默认情况下)用于启动初始进程的同一终端。 / p>

不是最流畅的设计 - 主要进程可以等待生成的进程在之前完成给你提示回来,因为在你继续之前完成其他进程显然很重要。也许作者不知道该怎么做。 ; - )

答案 1 :(得分:0)

负责打印邮件的流程正在后台运行( background process )。

通常,在后台中运行流程意味着只删除 stdinstdoutstderr仍然是关联的到实际的父shell,所以输出在终端上仍然可见。