Terminal 在文本程序中创建新屏幕(如vi和less)

Terminal 在文本程序中创建新屏幕(如vi和less),terminal,Terminal,像vi、less、screen这样的程序在执行时,会将数据填入终端,然后,如果按c-Z(或终止程序),终端会返回这些程序执行前的状态 一个程序通常是如何做到这一点的?这类事情的正确术语是什么 附:标题中使用的词语可能不正确,因为我甚至不知道这类事物的术语 编辑: 感谢@Atropo,我现在知道了它们的正确名称是前台进程, 但是,一个程序如何做到这一点呢?程序如何清除屏幕,进行写入,并在执行结束时让shell与所有旧写入一起重新出现?它们被称为前台进程 通常,前台进程向用户显示一个界面,用户可以通

vi
less
screen
这样的程序在执行时,会将数据填入终端,然后,如果按
c-Z
(或终止程序),终端会返回这些程序执行前的状态

一个程序通常是如何做到这一点的?这类事情的正确术语是什么

附:标题中使用的词语可能不正确,因为我甚至不知道这类事物的术语

编辑: 感谢@Atropo,我现在知道了它们的正确名称是
前台进程

但是,一个程序如何做到这一点呢?程序如何清除屏幕,进行写入,并在执行结束时让shell与所有旧写入一起重新出现?

它们被称为
前台进程

通常,前台进程向用户显示一个界面,用户可以通过该界面与程序进行交互。因此,用户必须等待一个前台进程完成,然后才能运行另一个前台进程。
当您使用
前台进程时,
shell提示将消失,直到您关闭该进程或将其置于后台。

默认情况下,CTRL-C生成SIGINT信号,CTRL-Z SIGTSTP

要更改行为,您可以:

  • 重新定义或屏蔽信号处理程序
  • 禁用stdin的组合键
  • 关闭stdin描述符(与守护进程类似)

太好了!谢谢!它是如何工作的?我的意思是,程序如何决定让外壳“消失”,并在执行结束时用旧屏幕重新填充终端?