我想以編程方式查找連接到控制檯的X服務器,意思是當前由鼠標/鍵盤/屏幕控制。 我認爲有一個乾淨的方式來獲取當前的VT(使用/dev/console
?)。 fgconsole
code(fgconsole.c,getfd.c)讓我有些懷疑。 雖然獲取前臺控制檯/找到活動X服務器
struct vt_stat vtInfo;
ioctl(fdConsole, VT_GETSTATE, &vtInfo);
似乎是我想要的,提取的合法控制檯FD的代碼似乎有點不可靠的 - 雖然5個文件進行了測試(RW/W/R每個),它仍然失敗,如果稱爲終端內部仿真(xterm)。我可以忍受這一點,但它並不真的感覺良好...... (注意:當然,xterm不能成爲控制檯 - 我們正在討論在xterm中查詢fgconsole)。
接下來,我必須將vt(例如vt7)映射到X顯示器。 不過,我寧願不依賴於
ps aux | grep X
來實現這一目標?有沒有更可靠的方法? 我可以連接到/tmp/.X11-unix/
中列出的所有X服務器並詢問他們有關他們的vt嗎? 甚至直接獲得他們的控制檯('主動')狀態?我找不到用Xlib做這件事的一個明顯的方法,可能是因爲X服務器API對vts是不可知的,但是可能有這樣的擴展嗎?
感謝您的幫助!