新聞中心
linux 終端控制是一種強(qiáng)大的技術(shù),它可以讓我們更深入地控制終端以及與終端相關(guān)的所有東西,例如登錄用戶,vim編輯器等。本文將著重介紹TTYS層次的奧秘,深入了解TTY的主要組件以及它們是如何起作用的。

成都創(chuàng)新互聯(lián)公司從2013年開始,先為康樂等服務(wù)建站,康樂等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為康樂企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
首先,我們來看看 TTY 的層次結(jié)構(gòu)。圖 1提供了一個簡圖,展示了TTY抽象層次結(jié)構(gòu):

圖 1:TTY抽象層次結(jié)構(gòu)
從上面我們可以看出,TTY 基本上可以分為三個部分:
– TTY 設(shè)備驅(qū)動程序:這是低層次的硬件驅(qū)動程序,可以處理串口和終端等設(shè)備的輸入輸出,包括獲取輸入數(shù)據(jù),控制發(fā)送數(shù)據(jù)以及更新設(shè)備的狀態(tài)等。
– TTY 內(nèi)核部分:包括管理 TTY 的和控制 TTY 之間的交互等使用的行為,以及實現(xiàn) TTY 的特定的功能和選項等。
– 用戶空間:它提供了 TTY 和用戶對話的接口,它能夠控制 TTY 的輸入和輸出,并實現(xiàn)了終端和終端控制程序之間的交互,所以可以在 Linux 命令行窗口中使用 TTY。
既然我們已經(jīng)來了解 TTY 的層次結(jié)構(gòu),那么下面我們來看看如何使用代碼來控制 TTY。 TTY設(shè)備驅(qū)動程序提供了一些內(nèi)核級的接口,下面是有關(guān) TTY 控制的代碼,其中, tty_ioctl() 是用于 TTY 控制的內(nèi)核函數(shù):
“`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;
// 關(guān)閉TTY
case TIOCCLOSE:
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
tty_kref_put(tty);
return 0;
}
return -ENOIOCTLCMD;
}
這段代碼實現(xiàn)了一個控制 TTY 的函數(shù),既可以打開 TTY,也可以關(guān)閉 TTY,這在控制 TTY 時非常有用。
通過上述的內(nèi)容,我們可以看出,TTY 層次的結(jié)構(gòu)其實就是一種抽象的技術(shù),可以把設(shè)備的輸入輸出抽象成一種更抽象的概念,并且通過編寫相關(guān)的控制代碼,更加輕松地控制 TTY 以及它有關(guān)的東西。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
本文題目:Linux終端控制:探索TTYS層次的奧秘(linuxttys)
地址分享:http://www.5511xx.com/article/dhdjoch.html


咨詢
建站咨詢
