From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Fri, 25 Jan 2002 15:18:25 +0300 From: "Dmitry V. Levin" To: devel@altlinux.ru Subject: Re: [devel] =?koi8-r?B?2sHQ1dPLIFh2ZmIg?= =?koi8-r?B?0NLJINPCz9LLxSDQwcvF1M/X?= Message-ID: <20020125121825.GB19661@ldv.office.alt-linux.org> Mail-Followup-To: devel@altlinux.ru References: <20020125105422.GA25115@voins.local> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="eJnRUKwClWJh1Khz" Content-Disposition: inline In-Reply-To: <20020125105422.GA25115@voins.local> X-fingerprint: 9658 398D 181B 1200 8FC5 26B8 F6F8 846B C1E2 3429 Sender: devel-admin@altlinux.ru Errors-To: devel-admin@altlinux.ru X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.0 Precedence: bulk Reply-To: devel@altlinux.ru List-Help: List-Post: List-Subscribe: , List-Id: List-Unsubscribe: , List-Archive: Archived-At: List-Archive: List-Post: --eJnRUKwClWJh1Khz Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: 8bit On Fri, Jan 25, 2002 at 01:54:22PM +0300, Alexey Voinov wrote: > Сначала опишу ситуацию в которой код, используемый в настоящее время для > поиска свободной циферки для запуска Xvfb, не работает. > > Я уже давно пересобираю все пакеты в chroot среде, к которой не монтируется > даже /proc. В связи с этим получаю /tmp, который радикально отличается от > настоящего тем, что в нём нет файла /tmp/.X11-unix/X0 в момет работы > X сервера. Т.е. тот код, который используется сейчас радостно находит > $DISPNUM==0 и считает, что Xvfb запустился. На самом деле этот сокет уже > занят, о чём Xvfb сообщает. > > Предлагаю немного доработать то, что есть сейчас. У меня прекрасно > отработал следующий код: > > > unset XAUTHORITY ||: > unset DISPLAY ||: > DISPNUM=0 > while [ -z "$DISPLAY" ]; do > while [ -f /tmp/.X$DISPNUM-lock -o -e /tmp/.X11-unix/X$DISPNUM ]; do > DISPNUM=$[DISPNUM+1] > [ "$DISPNUM" != 0 ] > done > DISPLAY=:$DISPNUM > %_x11bindir/Xvfb $DISPLAY & > if [ -f /tmp/.X$DISPNUM-lock -o -e /tmp/.X11-unix/X$DISPNUM ]; then Это race condition. > export DISPLAY > else > unset DISPLAY > DISPNUM=$[DISPNUM+1] > fi > done В общем, проблема есть, но хорошего решения я пока что не видел. Стоит подумать о вспомогательной программе (bind_cloexec_socket && exec_Xvfb). Regards, Dmitry +-------------------------------------------------------------------------+ Dmitry V. Levin mailto://ldv@alt-linux.org ALT Linux Team http://www.altlinux.com/ Fandra Project http://www.fandra.org/ +-------------------------------------------------------------------------+ UNIX is user friendly. It's just very selective about who its friends are. --eJnRUKwClWJh1Khz Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE8UU0Q9viEa8HiNCkRAkCdAJ43jVKCpISEXk8vqrcEfdZyn7H3zQCfZnIN sgEvMSQvcTI0haHytcfEF7g= =sVcX -----END PGP SIGNATURE----- --eJnRUKwClWJh1Khz--