【Linux】终端TTY

前言

TTY:teletype,早期的电传打字机,后面演变成了键盘和显示器,都是计算机的终端设备。为了与终端设备交互,linux又实现了TTY的子系统。
通过toe -a可以查看系统支持的终端类型。

控制台和虚拟终端

通过ls /devls /dev/pts我们可以看到系统当前的设备,其中就包含了控制台和虚拟终端。他们都是用于和系统进行交互的终端。他们通过软件的方式实现了曾经的硬件终端(电传打字机)。

  • /dev/console:控制台
    我们使用VMware打开linux系统的控制台,会发现启动停止会打印许多的系统信息,这就是控制台,一种特殊的终端。
  • /dev/tty[0-63]:虚拟终端(内核态)
    控制台中,我们执行tty发现会打印/dev/tty*,这个就是内核态的虚拟终端。
  • /dev/pts/[0+]:虚拟终端(用户态)
    我们通过putty或xshell等工具通过ssh登陆后所出现的交互界面就是用户态的虚拟终端。

C程序获取TTY

#include <stdio.h>
#include <unistd.h>
#define MY_STDIN       0
#define MY_STDOUT    1
#define MY_STDERR     2

int main(int argc,char * argv[])
{
   if(isatty(MY_STDOUT)) /*如果FD 1是一个tty*/
   {
     puts(ttyname(MY_STDOUT)); /* 打印tty绝对路径 */
   }
   else
   {
      puts("run error!");
      return -1;
   }
  return 0;
}

异常

  • 非交互终端(如反弹shell)执行top,出现failed tty get,表示没有获取相关设备
    修复:top -b已批处理模式运行,不接受输入指令。




爱家人,爱生活,爱设计,爱编程,拥抱精彩人生!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qqchaozai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值