<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ejudge.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=Serve.cfg%3Aglobal%3Acompile_dir</id>
	<title>Serve.cfg:global:compile dir - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://ejudge.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=Serve.cfg%3Aglobal%3Acompile_dir"/>
	<link rel="alternate" type="text/html" href="https://ejudge.ru/wiki/index.php?title=Serve.cfg:global:compile_dir&amp;action=history"/>
	<updated>2026-04-04T02:53:17Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://ejudge.ru/wiki/index.php?title=Serve.cfg:global:compile_dir&amp;diff=3666&amp;oldid=prev</id>
		<title>Anna: Created page with &quot;Навигация: Главная страница/Система ejudge/Использование/Конфигурационные файлы/[[serve...&quot;</title>
		<link rel="alternate" type="text/html" href="https://ejudge.ru/wiki/index.php?title=Serve.cfg:global:compile_dir&amp;diff=3666&amp;oldid=prev"/>
		<updated>2012-02-10T09:20:23Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Навигация: &lt;a href=&quot;/wiki/index.php/Main_Page&quot; title=&quot;Main Page&quot;&gt;Главная страница&lt;/a&gt;/&lt;a href=&quot;/wiki/index.php/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_ejudge&quot; title=&quot;Система ejudge&quot;&gt;Система ejudge&lt;/a&gt;/&lt;a href=&quot;/wiki/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5&quot; title=&quot;Использование&quot;&gt;Использование&lt;/a&gt;/&lt;a href=&quot;/wiki/index.php/%D0%9A%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5_%D1%84%D0%B0%D0%B9%D0%BB%D1%8B&quot; title=&quot;Конфигурационные файлы&quot;&gt;Конфигурационные файлы&lt;/a&gt;/[[serve...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Использование]]/[[Конфигурационные файлы]]/[[serve.cfg]]/[[serve.cfg:global|Глобальные конфигурационные параметры]]/[[serve.cfg:global:compile_dir|compile_dir]]&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| '''Имя переменной''':   || &amp;lt;tt&amp;gt;'''compile_dir'''&amp;lt;/tt&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
|  '''Содержится в:'''    || &amp;lt;tt&amp;gt;[[serve.cfg:global|global]]&amp;lt;/tt&amp;gt;   ||&lt;br /&gt;
|-&lt;br /&gt;
| '''Используется:''' || &amp;lt;tt&amp;gt;serve, compile&amp;lt;/tt&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| '''Тип содержимого:''' || ''путь к каталогу'' ||&lt;br /&gt;
|-&lt;br /&gt;
|'''Может отсутствовать:''' || ''да'' ||&lt;br /&gt;
|-&lt;br /&gt;
| '''Значение по умолчанию:'''|| &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Может повторяться:''' || ''нет'' ||&lt;br /&gt;
|}&lt;br /&gt;
'''Описание.''' Данная переменная задаёт каталоги обмена между программами &amp;lt;tt&amp;gt;serve&amp;lt;/tt&amp;gt; и&lt;br /&gt;
&amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt;. Полный путь к этому каталогу определяется по следующим правилам:&lt;br /&gt;
&lt;br /&gt;
* Если значение переменной &amp;lt;tt&amp;gt;compile_dir&amp;lt;/tt&amp;gt; не задано, используется значение &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Если значение переменной &amp;lt;tt&amp;gt;compile_dir&amp;lt;/tt&amp;gt; начинается с символа ’/’, то есть значение переменной задаёт полный абсолютный путь к каталогу скриптов, этот путь используется без изменений.&lt;br /&gt;
&lt;br /&gt;
* Если значение переменной &amp;lt;tt&amp;gt;compile_dir&amp;lt;/tt&amp;gt; не начинается с символа ’/’, полный путь к каталогу скриптов образуется конкатенацией значения переменной &amp;lt;tt&amp;gt;[[serve.cfg:global:var_dir|var_dir]]&amp;lt;/tt&amp;gt; и значения переменной &amp;lt;tt&amp;gt;compile_dir&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Каталог обмена содержит в себе несколько подкаталогов, назначение которых описывается ниже.&lt;br /&gt;
&lt;br /&gt;
* Подкаталог &amp;lt;tt&amp;gt;queue&amp;lt;/tt&amp;gt; используется для передачи информации от программы &amp;lt;tt&amp;gt;serve&amp;lt;/tt&amp;gt; к программе &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt;. Программа &amp;lt;tt&amp;gt;serve&amp;lt;/tt&amp;gt; помещает в этот каталог небольшие файлы, содержащие служебную информацию о программе, которую необходимо скомпилировать&lt;br /&gt;
(так называемый «пакет задания компиляции»). Программа &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt; периодически просматривает этот каталог и при появлении в нём новых пакетов задания компиляции выполняет их. Этот каталог может использоваться совместно несколькими программами &amp;lt;tt&amp;gt;serve&amp;lt;/tt&amp;gt;, обслуживающими разные турниры, и несколькими программами &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt;, например, работающими на разных компьютерах в сети. Этот каталог имеет специальную структуру, чтобы предотвратить синхронизационные ошибки при одновременном доступе нескольких программ.&lt;br /&gt;
&lt;br /&gt;
* Подкаталог &amp;lt;tt&amp;gt;src&amp;lt;/tt&amp;gt; используется для передачи информации от программы &amp;lt;tt&amp;gt;serve&amp;lt;/tt&amp;gt; к программе &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt;. Программа &amp;lt;tt&amp;gt;serve&amp;lt;/tt&amp;gt; помещает в этот каталог файл исходного текста программы, которую необходимо скомпилировать. Файл с текстом программы имеет то же самое имя, что и пакет задания компиляции для этой программы. Программа &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt; считывает файл исходного текста после файла пакета задания компиляции. Этот каталог может использоваться совместно несколькими программами &amp;lt;tt&amp;gt;serve&amp;lt;/tt&amp;gt;, обслуживающими разные турниры, и несколькими программами &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt;. Синхронизация доступа поддерживается в каталоге &amp;lt;tt&amp;gt;queue&amp;lt;/tt&amp;gt;, поэтому никакой дополнительной синхронизации в каталоге &amp;lt;tt&amp;gt;src&amp;lt;/tt&amp;gt; не требуется.&lt;br /&gt;
&lt;br /&gt;
* Подкаталог &amp;lt;tt&amp;gt;status&amp;lt;/tt&amp;gt; используется для передачи информации от программы &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt; к программе &amp;lt;tt&amp;gt;serve&amp;lt;/tt&amp;gt;. В этот каталог программа &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt; помещает небольшой файл с информацией о результате компиляции (так называемый «пакет результата компиляции»). Программа &amp;lt;tt&amp;gt;serve&amp;lt;/tt&amp;gt; периодически просматривает данный каталог и при появлении в нём новых файлов обновляет своё внутреннее состояние. Поскольку каталог может использоваться одновременно несколькими программами &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt; и одной программой &amp;lt;tt&amp;gt;serve&amp;lt;/tt&amp;gt;,он имеет специальную структуру для предотвращения синхронизационных ошибок.&lt;br /&gt;
&lt;br /&gt;
* Подкаталог &amp;lt;tt&amp;gt;report&amp;lt;/tt&amp;gt; используется для передачи информации от программы &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt; к программе &amp;lt;tt&amp;gt;serve&amp;lt;/tt&amp;gt;. В этот каталог программа &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt; помещает список ошибок, выданных при неуспешной компиляции, или скомпилированный исполняемый файл в случае успешной компиляции. Каталог может использоваться одновременно несколькими программами &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt; и одной программой &amp;lt;tt&amp;gt;serve&amp;lt;/tt&amp;gt;, но синхронизация доступа ведётся с помощью каталога status, поэтому никакой дополнительной синхронизации в каталоге &amp;lt;tt&amp;gt;report&amp;lt;/tt&amp;gt; не требуется.&lt;br /&gt;
&lt;br /&gt;
* Символическая ссылка &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;номер&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;, где &amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;&amp;lt;номер&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt; — четырёхзначный идентификатор турнира. Эта символическая ссылка создаётся в каталоге, задаваемом переменной &amp;lt;tt&amp;gt;compile_dir&amp;lt;/tt&amp;gt;, программы &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt;, и указывает на каталог, задаваемый переменной &amp;lt;tt&amp;gt;compile_dir&amp;lt;/tt&amp;gt;, программы &amp;lt;tt&amp;gt;serve&amp;lt;/tt&amp;gt;. Если эти каталоги совпадают, символическая ссылка указывает на каталог, в котором она находится. С помощью этой символической ссылки программа &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt; может обслуживать одновременно несколько турниров, записывая&lt;br /&gt;
результаты компиляции в каталог обмена только соответствующего турнира. &lt;br /&gt;
&lt;br /&gt;
'''Пример.''' С помощью задания каталога обмена можно добиться того, что несколько одновременно работающих серверов турнира будут использовать одну программу компиляции &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt;. Для этого создаётся отдельный каталог для программы &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt;, например &amp;lt;tt&amp;gt;/var/ejudge/compile&amp;lt;/tt&amp;gt;. Этот каталог указывается в качестве коревого в конфигурационном файле программы &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt; c помощью строки&lt;br /&gt;
 root_dir = /var/ejudge/compile&lt;br /&gt;
&lt;br /&gt;
Программа &amp;lt;tt&amp;gt;compile&amp;lt;/tt&amp;gt; запускается в каталоге &amp;lt;tt&amp;gt;/var/ejudge/compile&amp;lt;/tt&amp;gt;. Теперь во всех конфигурационных файлах серверов турниров для использования этой программы компиляции&lt;br /&gt;
достаточно установить переменную &amp;lt;tt&amp;gt;compile_dir&amp;lt;/tt&amp;gt; в следующее значение:&lt;br /&gt;
 compile_dir = /var/ejudge/compile/var/compile&lt;/div&gt;</summary>
		<author><name>Anna</name></author>
		
	</entry>
</feed>