diff options
Diffstat (limited to 'po/ru/man2/vfork.2.po')
-rw-r--r-- | po/ru/man2/vfork.2.po | 700 |
1 files changed, 700 insertions, 0 deletions
diff --git a/po/ru/man2/vfork.2.po b/po/ru/man2/vfork.2.po new file mode 100644 index 00000000..38adfaca --- /dev/null +++ b/po/ru/man2/vfork.2.po @@ -0,0 +1,700 @@ +# Russian translation of manpages +# This file is distributed under the same license as the manpages-l10n package. +# Copyright © of this file: +# Azamat Hackimov <azamat.hackimov@gmail.com>, 2016. +# Dmitriy Ovchinnikov <dmitriyxt5@gmail.com>, 2012. +# Dmitry Bolkhovskikh <d20052005@yandex.ru>, 2017. +# Katrin Kutepova <blackkatelv@gmail.com>, 2018. +# Yuri Kozlov <yuray@komyakino.ru>, 2012-2019. +# Иван Павлов <pavia00@gmail.com>, 2019. +msgid "" +msgstr "" +"Project-Id-Version: manpages-l10n\n" +"POT-Creation-Date: 2024-03-09 15:51+0100\n" +"PO-Revision-Date: 2019-10-15 19:00+0300\n" +"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n" +"Language-Team: Russian <man-pages-ru-talks@lists.sourceforge.net>\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || " +"(n%100>=11 && n%100<=14)? 2 : 3);\n" +"X-Generator: Lokalize 2.0\n" + +#. type: TH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "vfork" +msgstr "vfork" + +#. type: TH +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, no-wrap +msgid "2023-10-31" +msgstr "31 октября 2023 г." + +#. type: TH +#: archlinux fedora-40 fedora-rawhide mageia-cauldron +#, no-wrap +msgid "Linux man-pages 6.06" +msgstr "Linux man-pages 6.06" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "NAME" +msgstr "ИМЯ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "vfork - create a child process and block parent" +msgstr "vfork - создаёт дочерний процесс и блокирует родительский" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "LIBRARY" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Standard C library (I<libc>, I<-lc>)" +msgstr "" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "SYNOPSIS" +msgstr "СИНТАКСИС" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<#include E<lt>unistd.hE<gt>>\n" +msgstr "B<#include E<lt>unistd.hE<gt>>\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "B<pid_t vfork(void);>\n" +msgstr "B<pid_t vfork(void);>\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):" +msgstr "" +"Требования макроса тестирования свойств для glibc (см. " +"B<feature_test_macros>(7)):" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "B<vfork>():" +msgstr "B<vfork>():" + +#. || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy, no-wrap +#| msgid "" +#| "(_XOPEN_SOURCE\\ E<gt>=\\ 500) && ! (_POSIX_C_SOURCE\\ E<gt>=\\ 200809L)\n" +#| " || /* Since glibc 2.19: */ _DEFAULT_SOURCE\n" +#| " || /* Glibc versions E<lt>= 2.19: */ _BSD_SOURCE\n" +msgid "" +" Since glibc 2.12:\n" +" (_XOPEN_SOURCE E<gt>= 500) && ! (_POSIX_C_SOURCE E<gt>= 200809L)\n" +" || /* Since glibc 2.19: */ _DEFAULT_SOURCE\n" +" || /* glibc E<lt>= 2.19: */ _BSD_SOURCE\n" +" Before glibc 2.12:\n" +" _BSD_SOURCE || _XOPEN_SOURCE E<gt>= 500\n" +msgstr "" +"(_XOPEN_SOURCE\\ E<gt>=\\ 500) && ! (_POSIX_C_SOURCE\\ E<gt>=\\ 200809L)\n" +" || /* начиная с glibc 2.19: */ _DEFAULT_SOURCE\n" +" || /* в версиях glibc E<lt>= 2.19: */ _BSD_SOURCE\n" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "DESCRIPTION" +msgstr "ОПИСАНИЕ" + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Standard description" +msgstr "Описание в стандарте" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"(From POSIX.1) The B<vfork>() function has the same effect as B<fork>(2), " +"except that the behavior is undefined if the process created by B<vfork>() " +"either modifies any data other than a variable of type I<pid_t> used to " +"store the return value from B<vfork>(), or returns from the function in " +"which B<vfork>() was called, or calls any other function before " +"successfully calling B<_exit>(2) or one of the B<exec>(3) family of " +"functions." +msgstr "" +"(Из POSIX) Функция B<vfork>() аналогична B<fork>(2) за тем исключением, что " +"поведение не определено, если процесс, созданный B<vfork>(), изменяет любые " +"данные, кроме переменной типа I<pid_t>, используемой в качестве значения, " +"возвращаемого B<vfork>(), или возвращается из функции, из которой была " +"вызвана функция B<vfork>(), или вызывает любую функцию до удачного " +"исполнения B<_exit>(2) или одной из функций семейства B<exec>(3)." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Linux description" +msgstr "Описание в Linux" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<vfork>(), just like B<fork>(2), creates a child process of the calling " +"process. For details and return value and errors, see B<fork>(2)." +msgstr "" +"B<vfork>(), так же как и B<fork>(2), создаёт дочерний процесс для " +"вызывающего процесса. Подробности, возвращаемые значения и ошибки смотрите " +"в B<fork>(2)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<vfork>() is a special case of B<clone>(2). It is used to create new " +"processes without copying the page tables of the parent process. It may be " +"useful in performance-sensitive applications where a child is created which " +"then immediately issues an B<execve>(2)." +msgstr "" +"B<vfork>() \\(em это специальный вариант B<clone>(2). Он используется для " +"создания новых процессов без копирования таблиц страниц родительского " +"процесса. Это может использоваться в приложениях, критичных к " +"производительности, для создания дочерних процессов, сразу же запускающих " +"B<execve>(2)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<vfork>() differs from B<fork>(2) in that the calling thread is suspended " +"until the child terminates (either normally, by calling B<_exit>(2), or " +"abnormally, after delivery of a fatal signal), or it makes a call to " +"B<execve>(2). Until that point, the child shares all memory with its " +"parent, including the stack. The child must not return from the current " +"function or call B<exit>(3) (which would have the effect of calling exit " +"handlers established by the parent process and flushing the parent's " +"B<stdio>(3) buffers), but may call B<_exit>(2)." +msgstr "" +"Вызов B<vfork>() отличается от B<fork>(2) тем, что вызывающая нить " +"блокируется до тех пор, пока не завершится потомок (обычно, вызовом " +"B<_exit>(2) или, что ненормально, из-за принятого необработанного сигнала) " +"или не выполнит B<execve>(2). До этих пор потомок имеет общую память с " +"родителем, включая стек. Потомок не должен выходить из текущей функции или " +"вызывать B<exit>(3) (что приводит к вызовы обработчиков выхода, настроенных " +"родительским процессом и сбрасывает буферы B<stdio>(3) родителя), но может " +"вызвать B<_exit>(2)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"As with B<fork>(2), the child process created by B<vfork>() inherits copies " +"of various of the caller's process attributes (e.g., file descriptors, " +"signal dispositions, and current working directory); the B<vfork>() call " +"differs only in the treatment of the virtual address space, as described " +"above." +msgstr "" +"Как и у B<fork>(2), дочерний процесс, созданный B<vfork>(), наследует копии " +"различных атрибутов вызвавшего процесса (например, дескрипторы файлов, " +"обработчики сигналов и текущий рабочий каталог); вызов B<vfork>() отличается " +"только в применении виртуального адресного пространства (как описывалось " +"выше)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Signals sent to the parent arrive after the child releases the parent's " +"memory (i.e., after the child terminates or calls B<execve>(2))." +msgstr "" +"Сигналы передаются родителю после того, как потомок разблокирует его память " +"(т.е. после того, как потомок завершится или вызовет B<execve>(2))." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Historic description" +msgstr "Историческое описание" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Under Linux, B<fork>(2) is implemented using copy-on-write pages, so the " +"only penalty incurred by B<fork>(2) is the time and memory required to " +"duplicate the parent's page tables, and to create a unique task structure " +"for the child. However, in the bad old days a B<fork>(2) would require " +"making a complete copy of the caller's data space, often needlessly, since " +"usually immediately afterward an B<exec>(3) is done. Thus, for greater " +"efficiency, BSD introduced the B<vfork>() system call, which did not fully " +"copy the address space of the parent process, but borrowed the parent's " +"memory and thread of control until a call to B<execve>(2) or an exit " +"occurred. The parent process was suspended while the child was using its " +"resources. The use of B<vfork>() was tricky: for example, not modifying " +"data in the parent process depended on knowing which variables were held in " +"a register." +msgstr "" +"В Linux вызов B<fork>(2) реализован при помощи страниц, «копируемых при " +"записи» (copy-on-write), поэтому единственная задержка, возникающая при " +"вызове B<fork>(2) \\(em это время, необходимое для создания копии таблиц " +"страниц родительского процесса и уникальной структуры описания задачи " +"дочернего процесса. Однако, в прошлом для B<fork>(2) могло требоваться " +"создание полной копии пространства данных вызывающего процесса, что часто " +"было ненужно, так как в потомке сразу следовал запуск функции B<exec>(3). " +"Поэтому для большей эффективности в BSD был предложен системный вызов " +"B<vfork>(), который не копировал адресное пространство процесса, а " +"использовал то же самое пространство и управления нитью, блокируя " +"родительский процесс до вызова B<execve>(2) или до прекращения работы " +"потомка. Родительский процесс останавливался до тех пор, пока потомок " +"использовал его ресурсы. Использование B<vfork>() было ненадёжно: например, " +"сохранность данных родительского процесса зависела от того, хранились ли на " +"тот момент переменные в регистрах." + +#. type: SH +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "VERSIONS" +msgstr "ВЕРСИИ" + +#. In AIXv3.1 vfork is equivalent to fork. +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The requirements put on B<vfork>() by the standards are weaker than those " +"put on B<fork>(2), so an implementation where the two are synonymous is " +"compliant. In particular, the programmer cannot rely on the parent " +"remaining blocked until the child either terminates or calls B<execve>(2), " +"and cannot rely on any specific behavior with respect to shared memory." +msgstr "" +"Требования, предъявляемые стандартами к B<vfork>(), не такие жёсткие как те, " +"которые предъявляются к B<fork>(2), поэтому в реализации достаточно просто " +"сделать их синонимами. В частности, программист не может полагаться на " +"блокировку родителя до завершения потомка или до вызова им B<execve>(2), и " +"не может полагаться на специфическое поведение возникновения общей памяти." + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "Some consider the semantics of B<vfork>() to be an architectural " +#| "blemish, and the 4.2BSD man page stated: \"This system call will be " +#| "eliminated when proper system sharing mechanisms are implemented. Users " +#| "should not depend on the memory sharing semantics of B<vfork>() as it " +#| "will, in that case, be made synonymous to B<fork>(2).\" However, even " +#| "though modern memory management hardware has decreased the performance " +#| "difference between B<fork>(2) and B<vfork>(), there are various reasons " +#| "why Linux and other systems have retained B<vfork>():" +msgid "" +"Some consider the semantics of B<vfork>() to be an architectural blemish, " +"and the 4.2BSD man page stated: \\[lq]This system call will be eliminated " +"when proper system sharing mechanisms are implemented. Users should not " +"depend on the memory sharing semantics of I<vfork> as it will, in that case, " +"be made synonymous to I<fork>.\\[rq] However, even though modern memory " +"management hardware has decreased the performance difference between " +"B<fork>(2) and B<vfork>(), there are various reasons why Linux and other " +"systems have retained B<vfork>():" +msgstr "" +"Некоторые считают, что в семантике B<vfork>() есть архитектурный недостаток, " +"а в справочной странице BSD написано следующее: «Данный системный вызов " +"будет удалён после того, как будут правильно реализованы соответствующие " +"механизмы разделения ресурсов системы. Пользователи не должны опираться на " +"существующую семантику общей памяти B<vfork>(), то есть программа должна " +"быть аналогична программе с B<fork>(2)». Однако, даже при том, что " +"современные аппаратные средства управления памятью уменьшили разницу в " +"производительности между B<fork>(2) и B<vfork>(), есть другие причины почему " +"в Linux и других операционных системах B<vfork>() ещё существует:" + +#. type: IP +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "\\[bu]" +msgstr "\\[bu]" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Some performance-critical applications require the small performance " +"advantage conferred by B<vfork>()." +msgstr "" +"Для некоторых критичных к производительности приложений очень важна та " +"маленькая прибавка к производительности, предоставляемая B<vfork>()." + +#. http://stackoverflow.com/questions/4259629/what-is-the-difference-between-fork-and-vfork +#. http://developers.sun.com/solaris/articles/subprocess/subprocess.html +#. http://mailman.uclinux.org/pipermail/uclinux-dev/2009-April/000684.html +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "B<vfork>() can be implemented on systems that lack a memory-management " +#| "unit (MMU), but B<fork>(2) can't be implemented on such systems. " +#| "(POSIX.1-2008 removed B<vfork>() from the standard; the POSIX rationale " +#| "for the B<posix_spawn>(3) function notes that that function, which " +#| "provides functionality equivalent to B<fork>(2)+B<exec>(3), is designed " +#| "to be implementable on systems that lack an MMU.)" +msgid "" +"B<vfork>() can be implemented on systems that lack a memory-management unit " +"(MMU), but B<fork>(2) can't be implemented on such systems. (POSIX.1-2008 " +"removed B<vfork>() from the standard; the POSIX rationale for the " +"B<posix_spawn>(3) function notes that that function, which provides " +"functionality equivalent to B<fork>(2)+ B<exec>(3), is designed to be " +"implementable on systems that lack an MMU.)" +msgstr "" +"Вызов B<vfork>() может быть реализован в системах, у которых нет блока " +"управления памятью (MMU), а B<fork>(2) невозможно реализовать на таких " +"системах (из POSIX.1-2008 вызов B<vfork>() удалён; для реализации " +"эквивалента B<fork>(2)+B<exec>(3) в системах без MMU в POSIX предлагается " +"использовать функцию B<posix_spawn>(3))." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"On systems where memory is constrained, B<vfork>() avoids the need to " +"temporarily commit memory (see the description of I</proc/sys/vm/" +"overcommit_memory> in B<proc>(5)) in order to execute a new program. (This " +"can be especially beneficial where a large parent process wishes to execute " +"a small helper program in a child process.) By contrast, using B<fork>(2) " +"in this scenario requires either committing an amount of memory equal to the " +"size of the parent process (if strict overcommitting is in force) or " +"overcommitting memory with the risk that a process is terminated by the out-" +"of-memory (OOM) killer." +msgstr "" +"В системах с малым количеством памяти B<vfork>() при запуске новой программы " +"не выполняет временное выделение памяти (смотрите описание I</proc/sys/vm/" +"overcommit_memory> в B<proc>(5)) (это особенно полезно, если огромный " +"родительский процесс хочет выполнить маленькую вспомогательную программу в " +"дочернем процессе). Вызов B<fork>(2) в этом случае или потребуется выделения " +"количества памяти как у родительского процесса (если включён жёсткий учёт " +"обязательств) или перерасходует память с риском завершения процесса " +"посредством сторожа расходования памяти ядра (OOM)." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Linux notes" +msgstr "Замечания, касающиеся Linux" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Fork handlers established using B<pthread_atfork>(3) are not called when a " +"multithreaded program employing the NPTL threading library calls " +"B<vfork>(). Fork handlers are called in this case in a program using the " +"LinuxThreads threading library. (See B<pthreads>(7) for a description of " +"Linux threading libraries.)" +msgstr "" +"Обработчики fork, установленные с помощью B<pthread_atfork>(3), не " +"вызываются когда многонитиевая программа использует вызовы библиотеки нитей " +"NPTL B<vfork>(). Обработчики fork вызываются в этом случае в программе, в " +"которой используется библиотека нитей LinuxThreads. (См. в B<pthreads>(7) " +"описание библиотек нитей Linux.)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"A call to B<vfork>() is equivalent to calling B<clone>(2) with I<flags> " +"specified as:" +msgstr "" +"Вызов B<vfork>() эквивалентен вызову B<clone>(2) со следующим значением " +"I<flags>:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid " CLONE_VM | CLONE_VFORK | SIGCHLD\n" +msgstr " CLONE_VM | CLONE_VFORK | SIGCHLD\n" + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "STANDARDS" +msgstr "СТАНДАРТЫ" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "None" +msgid "None." +msgstr "None" + +#. type: SH +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "HISTORY" +msgstr "ИСТОРИЯ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"4.3BSD; POSIX.1-2001 (but marked OBSOLETE). POSIX.1-2008 removes the " +"specification of B<vfork>()." +msgstr "" +"4.3BSD; POSIX.1-2001 (помечен как УСТАРЕВШИЙ). Из POSIX.1-2008 описание " +"B<vfork>() было удалено." + +#. In the release notes for 4.2BSD Sam Leffler wrote: `vfork: Is still +#. present, but definitely on its way out'. +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "The B<vfork>() system call appeared in 3.0BSD. In 4.4BSD it was made " +#| "synonymous to B<fork>(2) but NetBSD introduced it again; see E<.UR " +#| "http://www.netbsd.org\\:/Documentation\\:/kernel\\:/vfork.html> E<.UE .> " +#| "In Linux, it has been equivalent to B<fork>(2) until 2.2.0-pre6 or so. " +#| "Since 2.2.0-pre9 (on i386, somewhat later on other architectures) it is " +#| "an independent system call. Support was added in glibc 2.0.112." +msgid "" +"The B<vfork>() system call appeared in 3.0BSD. In 4.4BSD it was made " +"synonymous to B<fork>(2) but NetBSD introduced it again; see E<.UR http://" +"www.netbsd.org\\:/Documentation\\:/kernel\\:/vfork.html> E<.UE .> In Linux, " +"it has been equivalent to B<fork>(2) until Linux 2.2.0-pre6 or so. Since " +"Linux 2.2.0-pre9 (on i386, somewhat later on other architectures) it is an " +"independent system call. Support was added in glibc 2.0.112." +msgstr "" +"Системный вызов B<vfork>() впервые появился в 30BSD. В 4.4BSD он стал " +"синонимом B<fork>(2), но в NetBSD он был введён снова; смотрите E<.UR http://" +"www.netbsd.org\\:/Documentation\\:/kernel\\:/vfork.html> E<.UE .> В Linux " +"этот системный вызов был эквивалентом B<fork>(2), примерно, до ядра 2.2.0-" +"pre6. Начиная с 2.2.0-pre9 (на i386 и немного позже на других архитектурах), " +"он стал независимым системным вызовом. Его поддержка была добавлена в glibc " +"2.0.112." + +#. type: SH +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "CAVEATS" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The child process should take care not to modify the memory in unintended " +"ways, since such changes will be seen by the parent process once the child " +"terminates or executes another program. In this regard, signal handlers can " +"be especially problematic: if a signal handler that is invoked in the child " +"of B<vfork>() changes memory, those changes may result in an inconsistent " +"process state from the perspective of the parent process (e.g., memory " +"changes would be visible in the parent, but changes to the state of open " +"file descriptors would not be visible)." +msgstr "" +"Потомок не должен изменять память не ожидаемым образом, так как такие " +"изменения будут видны родительскому процессу после завершения потомка или " +"выполнении другой программы. При таком отношении особенно остро стоит " +"проблема в обработчиках сигналов: если обработчик сигналов, вызванный в " +"потомке (созданном B<vfork>()), изменяет память, то эти изменения могут " +"привести к нарушению целостности состояния процесса с точки зрения родителя " +"(например, изменения памяти были бы видны родителю, а изменения состояния " +"открытых файловых дескрипторов не видны)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"When B<vfork>() is called in a multithreaded process, only the calling " +"thread is suspended until the child terminates or executes a new program. " +"This means that the child is sharing an address space with other running " +"code. This can be dangerous if another thread in the parent process changes " +"credentials (using B<setuid>(2) or similar), since there are now two " +"processes with different privilege levels running in the same address " +"space. As an example of the dangers, suppose that a multithreaded program " +"running as root creates a child using B<vfork>(). After the B<vfork>(), a " +"thread in the parent process drops the process to an unprivileged user in " +"order to run some untrusted code (e.g., perhaps via plug-in opened with " +"B<dlopen>(3)). In this case, attacks are possible where the parent process " +"uses B<mmap>(2) to map in code that will be executed by the privileged " +"child process." +msgstr "" +"Если B<vfork>() вызывается многонитиевом процессе, то в ожидании завершения " +"процесса или запуска новой программы приостанавливается только вызывающая " +"нить. Это означает, что потомок совместно использует адресное пространство " +"другим выполняющимся кодом. Это может быть опасно, если другая нить в " +"родительском процессе изменяет полномочия (с помощью B<setuid>(2) и " +"подобных), так как теперь есть два процесса с разным уровнем прав, " +"выполняемых в одном адресном пространстве. Как пример представим, что " +"многонитиевая программа, работающая с правами суперпользователя, создаёт " +"потомка с помощью B<vfork>(). После B<vfork>() нить в родительском процессе " +"понижает права процесса до непривилегированных, чтобы выполнить некий " +"недоверенный код (например, модуль, открытый через B<dlopen>(3)). В этом " +"случае появляется уязвимость, если родительский процесс использует " +"B<mmap>(2) для отображения кода, то он будет выполнен в привилегированном " +"дочернем процессе." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "BUGS" +msgstr "ДЕФЕКТЫ" + +#. As far as I can tell, the following is not true in Linux 2.6.19: +#. Currently (Linux 2.3.25), +#. .BR strace (1) +#. cannot follow +#. .BR vfork () +#. and requires a kernel patch. +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Details of the signal handling are obscure and differ between systems. The " +"BSD man page states: \"To avoid a possible deadlock situation, processes " +"that are children in the middle of a B<vfork>() are never sent B<SIGTTOU> " +"or B<SIGTTIN> signals; rather, output or I<ioctl>s are allowed and input " +"attempts result in an end-of-file indication.\"" +msgstr "" +"Обработка сигналов ещё более запутана и различается от системы к системе. В " +"справочной странице BSD написано следующее: «Для исключения возможности " +"взаимных блокировок процессы, находящиеся в середине исполнения B<vfork>(), " +"никогда не получат сигналов B<SIGTTOU> или B<SIGTTIN>, хотя вывод или " +"I<ioctl> всегда разрешены, а попытки ввода приводят к ситуации появления " +"конца файла»." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "SEE ALSO" +msgstr "СМ. ТАКЖЕ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<clone>(2), B<execve>(2), B<_exit>(2), B<fork>(2), B<unshare>(2), B<wait>(2)" +msgstr "" +"B<clone>(2), B<execve>(2), B<_exit>(2), B<fork>(2), B<unshare>(2), B<wait>(2)" + +#. type: TH +#: debian-bookworm +#, no-wrap +msgid "2023-02-05" +msgstr "5 февраля 2023 г." + +#. type: TH +#: debian-bookworm +#, no-wrap +msgid "Linux man-pages 6.03" +msgstr "Linux man-pages 6.03" + +#. type: SH +#: debian-bookworm +#, no-wrap +msgid "NOTES" +msgstr "ЗАМЕЧАНИЯ" + +#. type: Plain text +#: debian-bookworm opensuse-leap-15-6 +#, fuzzy +#| msgid "" +#| "Some consider the semantics of B<vfork>() to be an architectural " +#| "blemish, and the 4.2BSD man page stated: \"This system call will be " +#| "eliminated when proper system sharing mechanisms are implemented. Users " +#| "should not depend on the memory sharing semantics of B<vfork>() as it " +#| "will, in that case, be made synonymous to B<fork>(2).\" However, even " +#| "though modern memory management hardware has decreased the performance " +#| "difference between B<fork>(2) and B<vfork>(), there are various reasons " +#| "why Linux and other systems have retained B<vfork>():" +msgid "" +"Some consider the semantics of B<vfork>() to be an architectural blemish, " +"and the 4.2BSD man page stated: \"This system call will be eliminated when " +"proper system sharing mechanisms are implemented. Users should not depend " +"on the memory sharing semantics of B<vfork>() as it will, in that case, be " +"made synonymous to B<fork>(2). \" However, even though modern memory " +"management hardware has decreased the performance difference between " +"B<fork>(2) and B<vfork>(), there are various reasons why Linux and other " +"systems have retained B<vfork>():" +msgstr "" +"Некоторые считают, что в семантике B<vfork>() есть архитектурный недостаток, " +"а в справочной странице BSD написано следующее: «Данный системный вызов " +"будет удалён после того, как будут правильно реализованы соответствующие " +"механизмы разделения ресурсов системы. Пользователи не должны опираться на " +"существующую семантику общей памяти B<vfork>(), то есть программа должна " +"быть аналогична программе с B<fork>(2)». Однако, даже при том, что " +"современные аппаратные средства управления памятью уменьшили разницу в " +"производительности между B<fork>(2) и B<vfork>(), есть другие причины почему " +"в Linux и других операционных системах B<vfork>() ещё существует:" + +#. type: SS +#: debian-bookworm +#, no-wrap +msgid "Caveats" +msgstr "Предостережения" + +#. type: SS +#: debian-bookworm +#, no-wrap +msgid "History" +msgstr "История" + +#. type: TH +#: debian-unstable opensuse-tumbleweed +#, no-wrap +msgid "2023-07-28" +msgstr "28 июля 2023 г." + +#. type: TH +#: debian-unstable opensuse-tumbleweed +#, no-wrap +msgid "Linux man-pages 6.05.01" +msgstr "Linux man-pages 6.05.01" + +#. type: TH +#: opensuse-leap-15-6 +#, no-wrap +msgid "2023-03-30" +msgstr "30 марта 2023 г." + +#. type: TH +#: opensuse-leap-15-6 +#, no-wrap +msgid "Linux man-pages 6.04" +msgstr "Linux man-pages 6.04" |