我有一个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;
之后我没有收到任何错误。怎么解释呢?
答案1
这个问题类似于如何在Xephyr
不sleep
使用 -ing 的情况下启动。您的应用程序会在 Xvfb 准备就绪之前尝试访问它。解决这个问题最简单的方法是使用 xinit。运行 Xvfb
xinit script.sh -- /usr/bin/Xvfb :10
(包含export DISPLAY=:10
到 script.sh 中)