Linux

Xvfb:在新會話中執行某些程序是否需要一些延遲?

  • February 14, 2017

我有一個script.sh以這種方式在 Xvfb 新會話中開始的:

Xvfb :10 -screen 0 1000x200x24 & export DISPLAY=":10" && script.sh

script.sh我執行一個 c++ 程序和一個 java 程序。但是,有時我會在其中的一兩個中遇到錯誤:在 c++ 程序中我得到了Segmentation fault,而在 java 程序中我得到了類似awt can't get display:10. 當我script.sh在行首添加時錯誤消失了

sleep 2;

之後我沒有收到任何錯誤。怎麼解釋?

這個問題類似於How to launch Xephyrwithout sleep-ing。您的應用程序會在 Xvfb 準備好之前嘗試訪問它。解決這個問題的最乾淨的方法是使用 xinit。執行 Xvfb

xinit script.sh -- /usr/bin/Xvfb :10

(包含export DISPLAY=:10在 script.sh 中)

引用自:https://unix.stackexchange.com/questions/344926