xvfbに奇妙な問題があります。基本的に私はそうのようなXVFBを通じて実行中のアプリケーションがあります。xvfbからピクセルデータを読み込む
Xvfb :1 -screen 0 1920x1080x24+32 -fbdir /var/tmp &
export DISPLAY=:1
gimp &
をそして私は、このようなファイルからの画素データ読み込み:私は最初の1000個の要素をプリントアウトしたときにいくつかの理由
#include <string>
#include <string.h>
#include <thread>
#include <math.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
char *fbp1 = 0;
int fbfd1;
long int screensize1;
int main() {
fbfd1 = 0;
screensize1 = 0;
fbfd1 = open("/var/tmp/Xvfb_screen0", O_RDWR);
screensize1 = 1920 * 1080 * 4;
fbp1 = (char*)mmap(0,
screensize1,
PROT_READ | PROT_WRITE,
MAP_SHARED,
fbfd1,
0);
for (int i = 0; i < 1000; i++) {
cout << ((int*)fbp1)[i] << endl;
}
return 0;
}
をかバッファのために、スクリーン上の実際のビジュアルの印刷を開始する前に、多数のランダムなデータを出力します。
ご協力いただければ幸いです!
'open()'、 'mmap()'などの戻り値をテストすることをお勧めします。そして、マジックナンバー( '4'は 'sizeof(int)'の値を文書化してくださいあなたは 'int * fbp1'と' sizeof * fbp1'と書くことができます)。 –