Difference between revisions of "Переносимость"
From EjudgeWiki
(New page: Навигация: Главная страница/Система ejudge/Разработка/Переносимость Текущая (2.1) версия си...) |
|||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[Переносимость]] | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[Переносимость]] | ||
− | Текущая | + | Текущая версия системы работает только под управлением ОС Linux. В программе используются некоторые непереносимые функции. При переносе системы ejudge на другую платформу семейства Unix трудности могут возникнуть по следующим причинам: |
− | |||
− | |||
* Все программы используют механизм передачи идентификационной информации о процессе через UNIX-сокет. Linux реализует этот механизм с помощью специальной опции SO_PASSCRED сокета и посылки специального сообщения, содержащего иденификаторы процесса, пользователя и группы. Реализация API передачи идентификационной информации отличается от системы к системе. Например, на FreeBSD соответствующий механизм реализован совсем по-другому. | * Все программы используют механизм передачи идентификационной информации о процессе через UNIX-сокет. Linux реализует этот механизм с помощью специальной опции SO_PASSCRED сокета и посылки специального сообщения, содержащего иденификаторы процесса, пользователя и группы. Реализация API передачи идентификационной информации отличается от системы к системе. Например, на FreeBSD соответствующий механизм реализован совсем по-другому. | ||
* Все программы используют возможность передачи файловых дескрипторов через UNIX-сокет. Эта возможность реализована в UNIX-подобных системах практически повсеместно, но отсутствует в Win32. | * Все программы используют возможность передачи файловых дескрипторов через UNIX-сокет. Эта возможность реализована в UNIX-подобных системах практически повсеместно, но отсутствует в Win32. | ||
* Повсеместно используется функция open_memstream стандартной библиотеки Си. Эта функция позволяет связать дескриптор потока (FILE *) с буфером переменного размера в памяти. Данная функция реализована в GNU C Library. Система FreeBSD предоставляет аналогичные возможности, но с другим интерфейсом. | * Повсеместно используется функция open_memstream стандартной библиотеки Си. Эта функция позволяет связать дескриптор потока (FILE *) с буфером переменного размера в памяти. Данная функция реализована в GNU C Library. Система FreeBSD предоставляет аналогичные возможности, но с другим интерфейсом. | ||
* Вспомогательная программа capexec и библиотека libdropcaps.so используют специальный патч к ядру Linux, доступный на данном сайте, который позволяет лишить процесс возможности выполнять произвольные системные вызовы. Для безопасной работы системы в других операционных системах требуется реализация аналогичной функциональности. | * Вспомогательная программа capexec и библиотека libdropcaps.so используют специальный патч к ядру Linux, доступный на данном сайте, который позволяет лишить процесс возможности выполнять произвольные системные вызовы. Для безопасной работы системы в других операционных системах требуется реализация аналогичной функциональности. |
Latest revision as of 05:50, 28 August 2014
Навигация: Главная страница/Система ejudge/Разработка/Переносимость
Текущая версия системы работает только под управлением ОС Linux. В программе используются некоторые непереносимые функции. При переносе системы ejudge на другую платформу семейства Unix трудности могут возникнуть по следующим причинам:
- Все программы используют механизм передачи идентификационной информации о процессе через UNIX-сокет. Linux реализует этот механизм с помощью специальной опции SO_PASSCRED сокета и посылки специального сообщения, содержащего иденификаторы процесса, пользователя и группы. Реализация API передачи идентификационной информации отличается от системы к системе. Например, на FreeBSD соответствующий механизм реализован совсем по-другому.
- Все программы используют возможность передачи файловых дескрипторов через UNIX-сокет. Эта возможность реализована в UNIX-подобных системах практически повсеместно, но отсутствует в Win32.
- Повсеместно используется функция open_memstream стандартной библиотеки Си. Эта функция позволяет связать дескриптор потока (FILE *) с буфером переменного размера в памяти. Данная функция реализована в GNU C Library. Система FreeBSD предоставляет аналогичные возможности, но с другим интерфейсом.
- Вспомогательная программа capexec и библиотека libdropcaps.so используют специальный патч к ядру Linux, доступный на данном сайте, который позволяет лишить процесс возможности выполнять произвольные системные вызовы. Для безопасной работы системы в других операционных системах требуется реализация аналогичной функциональности.