从后台进程打印到 linux 提示

print to linux prompt from background process

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

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

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

负责在后台打印消息的进程 运行 (background process)。

一般来说,运行一个进程在后台意味着分离 stdinstdoutstderr 仍然链接到实际父级 shell,因此所有 输出 仍然在终端上可见。

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

这是因为一些其他进程在后台处于分离状态运行。

您启动的过程已完成,这就是您收到提示的原因。但它产生了另一个(后台)进程,例如通过 fork() 或其他机械师。当您收到提示时,其他进程仍在 运行,系统会告诉您等待它完成。

当它执行时,它将 "Done" 打印到它从其父级继承的标准输出 (stdout) - 这是(默认情况下)您用于启动初始进程的同一终端.

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