Bu yüzden xvfb ile garip bir sorun yaşıyorum. Temelde ben bir uygulama şöyle xvfb üzerinden çalışan var: Ben ilk 1000 unsurları çıktısını veyaxvfb öğesinden okuma pixel verileri
#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;
}
Nedense: o zaman
Xvfb :1 -screen 0 1920x1080x24+32 -fbdir /var/tmp &
export DISPLAY=:1
gimp &
Ve ben böyle dosyadan piksel verilerini okuma Arabellek, ekranda gerçek görüntüyü basmaya başlamadan önce bir grup rastgele veriyi yazdırır.
Herhangi bir yardım çok takdir edilecektir!
Bir kenara göre, 'open()', 'mmap()' vb. Dönüş değerlerini sınamanızı öneririm. Ve sihirli sayıları belgelendiririz ('' '' '' platform? - netlik için "int * fbp1" ve "sizeof * fbp1" yazabilirsiniz. –