程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Linux下C編程:底層終端編程實例

Linux下C編程:底層終端編程實例

編輯:關於C語言

Linux 系統的終端處理是一個非常大的系統,需要處理許多不同類型的設備和需求。涉及的內容包括:調制解調器、終端仿真、偽終端等。

Linux 系統處理終端的方法是通過串行接口連接的控制台與系統通信並運行程序。由於越來越多的廠商都參與到終端的生產,而且每個廠商都為自己的終端設計自己的命令集,所以需要有一種方法對終端的訪問進行一般化處理。Linux 系統使用一個能力數據庫terminfo來描述每個終端的能力以及調用這些功能的方法。

在某些情況下,程序員希望能夠對某些並不是終端的設備提供終端驅動程序功能,這時需要用到偽終端。偽終端提供一種方法,讓程序員假裝成為一個真正的終端,並能夠良好地與系統交互。

下面程序的功能是查詢和打印當前終端的一些能力

#include <stdlib.h>     
#include <stdio.h>     
#include <term.h>     
#include <curses.h>     
#define NUMCAPS 3     
         
int main()     
{     
    int j;     
    int retval = 0;     
    char * buf;     
    char *boolcaps[NUMCAPS] = {"am","bce","km"};     
    char *numcaps[NUMCAPS] = {"cols","lines","colors"};     
    char *strcaps[NUMCAPS] = {"cup","flash","hpa"};     
         
    if(setupterm(NULL,fileno(stdin),NULL) != OK){     
    perror("setupterm()");     
    exit(EXIT_FAILURE);     
    }     
         
    for(j = 0;j<NUMCAPS;++j){     
    retval = tigetflag(boolcaps[j]);     
    if(retval == FALSE)     
        printf("%s unsuported\n",boolcaps[j]);     
    else 
        printf("%s suported\n",boolcaps[j]);     
         
    }     
         
    for(j = 0;j<NUMCAPS;++j){     
    retval = tigetnum(numcaps[j]);     
    if(retval == ERR)     
        printf("%s unspported\n",numcaps[j]);     
    else 
        printf("%s is%d\n",numcaps[j],retval);     
         
    }     
         
         
    for(j = 0;j<NUMCAPS;++j){     
    buf = tigetstr(strcaps[j]);     
    if(buf == NULL)     
        printf("%s unspported\n",strcaps[j]);     
    else 
        printf("%s is%d\n",strcaps[j],buf[0]);     
         
    }     
         
}

注意:編譯此程序時要手動連接libcurses.a,編譯方式為gcc  test.c -o test -lcurses

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved