Linux终端控制:探索TTYS层次的奥秘(linuxttys)

linux 终端控制是一种强大的技术,它可以让我们更深入地控制终端以及与终端相关的所有东西,例如登录用户,vim编辑器等。本文将着重介绍TTYS层次的奥秘,深入了解TTY的主要组件以及它们是如何起作用的。

成都创新互联公司从2013年开始,先为康乐等服务建站,康乐等地企业,进行企业商务咨询服务。为康乐企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

首先,我们来看看 TTY 的层次结构。图 1提供了一个简图,展示了TTY抽象层次结构:

![1.png](https://upload-images.jianshu.io/upload_images/5030629-190154b67a7bfa17.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

图 1:TTY抽象层次结构

从上面我们可以看出,TTY 基本上可以分为三个部分:

– TTY 设备驱动程序:这是低层次的硬件驱动程序,可以处理串口和终端等设备的输入输出,包括获取输入数据,控制发送数据以及更新设备的状态等。

– TTY 内核部分:包括管理 TTY 的和控制 TTY 之间的交互等使用的行为,以及实现 TTY 的特定的功能和选项等。

– 用户空间:它提供了 TTY 和用户对话的接口,它能够控制 TTY 的输入和输出,并实现了终端和终端控制程序之间的交互,所以可以在 Linux 命令行窗口中使用 TTY。

既然我们已经来了解 TTY 的层次结构,那么下面我们来看看如何使用代码来控制 TTY。 TTY设备驱动程序提供了一些内核级的接口,下面是有关 TTY 控制的代码,其中, tty_ioctl() 是用于 TTY 控制的内核函数:

“`c

int tty_ioctl (struct tty_struct * tty,

unsigned int cmd,

unsigned long arg)

{

switch (cmd) {

// 打开TTY

case TIOCSCTTY:

if (tty_paranoia_check(tty, current->tty, “tty_ioctl”))

return -EACCES;

if (current->signal->tty != tty &&

tty->session == NULL) {

if (!capable(CAP_SYS_ADMIN))

return -EPERM;

}

current->signal->tty = tty;

tty->session = current->signal;

tty->pgrp = process_group(current);

return 0;

// 关闭TTY

case TIOCCLOSE:

if (!capable(CAP_SYS_ADMIN))

return -EPERM;

tty_kref_put(tty);

return 0;

}

return -ENOIOCTLCMD;

}


这段代码实现了一个控制 TTY 的函数,既可以打开 TTY,也可以关闭 TTY,这在控制 TTY 时非常有用。

通过上述的内容,我们可以看出,TTY 层次的结构其实就是一种抽象的技术,可以把设备的输入输出抽象成一种更抽象的概念,并且通过编写相关的控制代码,更加轻松地控制 TTY 以及它有关的东西。

香港服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。

当前题目:Linux终端控制:探索TTYS层次的奥秘(linuxttys)
文章链接:http://www.stwzsj.com/qtweb/news31/731.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联