初学者的 Unix 问题:
我对 unix shell 中暂停(Ctr+Z)命令的用途有点困惑。据我所知,暂停的进程/命令既不在后台也不在前台(显然)。但是 - 我对此不太确定,但这就是我每天摆弄的结果 - 暂停的进程不会“暂停”,因为它会像其他进程一样终止(或至少“完成其工作”)。它只是不会输出到终端。
那么暂停状态的特殊用途(或者如果你愿意的话,可以称为“机制”)是什么?为什么不只是背景和前景?
谢谢
[编辑:我错误地认为“暂停的进程不会‘暂停’,因为它会像其他进程一样终止(或至少‘完成其工作’)。”请参阅已接受的答案。]
答案1
Ctrl如果您使用+暂停作业Z,则它会暂停,即它不会“完成其作业”。您可以使用 bg 让它在后台继续(这意味着它可能仍在 stdout 中写入,但无法从 stdin 读取)。不过我认为您可以编写一个程序来忽略Ctrl+Z或以其他方式处理它,对此我不确定。
另一方面,如果您希望在后台启动它,您可以&
在 shell 中的命令后面放置一个。
答案2
它用于允许另一个进程控制标准输入和输出。它还用于在同一个 shell 中启动另一个进程。
例如:
在运行占据整个终端的文本编辑器时,键入 ^Z 可暂时关闭编辑器并运行一些命令(移动文件、更改歌曲、启动另一个交互式程序)。完成后,您可以通过再次打开编辑器来继续编辑文件。