linux獲取終端大小

在shell下可以直接用$LINES和$COLUMNS兩個變量,$LINES是屏幕高,$COLUMNS是屏幕寬,單位都是字符數。


在程序中獲取:

1.可以通過讀取$LINES與$COLUMNS對應的文件之類的,這裏不做贅述。

2.可以通過ioctl()系統函數得到


//具體實現方法
#include<stdio.h>
#include<sys/types.h>
#include<sys/ioctl.h>
#include<unistd.h>
#include<termios.h>
int main()
{
    struct winsize size;
    ioctl(STDIN_FILENO,TIOCGWINSZ,&size);
    printf("%d\n",size.ws_col);
    printf("%d\n",size.ws_row);
    return 0;
}


//其中struct winsize位於termios.h頭文件內
//具體位置vim /usr/include/asm-generic/termios.h
struct winsize {
    unsigned short ws_row;      //以字符爲單位,行數
    unsigned short ws_col;      //以字符爲單位,列數
    unsigned short ws_xpixel;   //以像素爲單位,水平方向
    unsigned short ws_ypixel;   //以像素爲單位,豎直方向
}

感謝lpfvipnevil兩位

發佈了36 篇原創文章 · 獲贊 5 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章