2012-04-17 4 views

ответ

1

да, возможно. Вот пример (извините, в JavaScript, используя node-x11), где вы можете создать gc в одном процессе и передать его в качестве параметра командной строки для другого процесса. Все изменения в gc (цвет переднего плана в этом примере) отображаются в другом процессе. Обратите внимание, что GC уничтожается на сервере, когда первый процесс завершается, и вы увидите ошибку «Bad GContext» во втором процессе, если попытаетесь продолжить его использование.

var x11 = require('x11'); 

var gc; 
x11.createClient(function(display) { 
    var X = display.client; 
    var root = display.screen[0].root; 

    var wid = X.AllocID(); 
    X.CreateWindow(wid, root, 0, 0, 400, 300); 

    var _gc = parseInt(process.argv[2]); 
    if (_gc != 0) 
     gc = _gc; 
    else { 
     gc = X.AllocID(); 
     X.CreateGC(gc, root); 
     console.log('GC created: ' + gc); 
     setInterval(function() { 
      X.ChangeGC(gc, { foreground: parseInt(Math.random()*0xffffff) }); 
      console.log('gc updated!'); 
     }, 500); 
    } 
    X.MapWindow(wid); 
    setInterval(function() { 
     X.PolyText8(wid, gc, 50, 50, ['Hello, Node.JS!', ' Hello, world!']); 
     console.log(gc); 
    }, 100); 
    X.on('error', function(err) { 
     console.log(err); 
    }); 
}); 
+0

Спасибо за обмен! Я новичок в X11 и хочу знать, что такие операции действительны. –