linux下獲取當前螢幕解析度
阿新 • • 發佈:2019-02-07
首先需要更改螢幕檔案fb0許可權,以供使用者開啟
終端命令列輸入:
chmod 0777 /dev/fb0
vi 新建一個.c檔案
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/mman.h>
#include<sys/ioctl.h>
#include<unistd.h>
#include<fcntl.h>
#include<linux/fb.h>
int main(int argc,char *argv[]){
int fd;
struct fb_var_screeninfo screen_info;
fd = open("/dev/fb0",O_RDWR);
ioctl(fd,FBIOGET_VSCREENINFO,&screen_info);
printf("%d*%d\n",screen_info.xres,screen_info.yres);
close(fd);
return 0;
}
執行即可
以上程式碼通過開啟/dev/fb0,利用ioctl系統呼叫獲取螢幕屬性資訊存放在結構體變數screen_info中,xres和yres則分別是結構體fb_var_screeninfo中螢幕的橫向縱向解析度資訊。而Framebuffer(fb)是用一個視訊輸出裝置從包含完整的幀資料的一個記憶體緩衝區中來驅動的一個視訊顯示裝置,而巨集定義FBIOGET_VSCREENINFO則是讓ioctl系統呼叫能從Framebuffer中獲取相應的顯示裝置資訊,巨集定義的詳情在/usr/include/linux/fb.h裡。
通常得到800,600不一定是當前螢幕的解析度,是預設的螢幕解析度。