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