本機運行x程序出現:Can't open display 原因及其解決方法

在Linux/Unix類操作系統上, DISPLAY用來設置將圖形顯示到何處. 直接登陸圖形界面或者登陸命令行界面後使用startx啓動圖形, DISPLAY環境變量將自動設置爲:0:0, 此時可以打開終端, 輸出圖形程序的名稱(比如xclock)來啓動程序, 圖形將顯示在本地窗口上, 在終端上輸入printenv查看當前環境變量, 輸出結果中有如下內容: 

DISPLAY=:0.0 

使用xdpyinfo可以查看到當前顯示的更詳細的信息. 

DISPLAY 環境變量格式如下host:NumA.NumB, host指Xserver所在的主機主機名或者ip地址, 圖形將顯示在這一機器上, 可以是啓動了圖形界面的Linux/Unix機器, 也可以是安裝了Exceed, X-Deep/32等Windows平臺運行的Xserver的Windows機器. 如果Host爲空, 則表示Xserver運行於本機, 並且圖形程序(Xclient)使用unix socket方式連接到Xserver, 而不是TCP方式. 使用TCP方式連接時, NumA爲連接的端口減去6000的值, 如果NumA爲0, 則表示連接到6000端口; 使用unix socket方式連接時則表示連接的unix socket的路徑, 如果爲0, 則表示連接到/tmp/.X11-unix/X0 . NumB則幾乎總是0. 

如果使用su username或者su - username切換到別的用戶, 並且使用命令

export DISPLAY=:0.0
##(這句話可以寫進.bashrc,就可以省去每次設計的麻煩)我注


設置DISPLAY環境變量, 運行圖形程序(如xclock)時會收到如下錯誤: 

Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

Error: Can't open display: :0.0


這是因爲Xserver默認情況下不允許別的用戶的圖形程序的圖形顯示在當前屏幕上. 如果需要別的用戶的圖形顯示在當前屏幕上, 則應以當前登陸的用戶, 也就是切換身份前的用戶執行如下命令

xhost +

解決方案來自:

http://www.itpub.net/viewthread.php?tid=1052163

轉自:http://blog.csdn.net/wuyao721/article/details/3678859


xhost +的作用

 xhost 是用來控制X server訪問權限的。

  通常當你從hostA登陸到hostB上運行hostB上的應用程序時,

  做爲應用程序來說,hostA是client,但是作爲圖形來說,

  是在hostA上顯示的,需要使用hostA的Xserver,所以hostA是

  server.因此在登陸到hostB前,需要在hostA上運行xhost +

  來使其它用戶能夠訪問hostA的Xserver.

  xhost + 是使所有用戶都能訪問Xserver.

  xhost + ip使ip上的用戶能夠訪問Xserver.

  xhost + nis:user@domain使domain上的nis用戶user能夠訪問

  xhost + inet:user@domain使domain上的inet用戶能夠訪問。

轉自:http://blog.csdn.net/dysh61301601/article/details/3208326

發佈了15 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章