# Russian translation of manpages # This file is distributed under the same license as the manpages-l10n package. # Copyright © of this file: # Azamat Hackimov , 2016. # Dmitriy Ovchinnikov , 2012. # Dmitry Bolkhovskikh , 2017. # Katrin Kutepova , 2018. # Yuri Kozlov , 2012-2019. # Иван Павлов , 2019. msgid "" msgstr "" "Project-Id-Version: manpages-l10n\n" "POT-Creation-Date: 2024-06-01 06:34+0200\n" "PO-Revision-Date: 2019-10-15 19:00+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \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 debian-unstable opensuse-tumbleweed #, no-wrap msgid "2024-05-02" msgstr "2 мая 2024 г." #. type: TH #: archlinux debian-unstable #, fuzzy, no-wrap #| msgid "Linux man-pages 6.7" msgid "Linux man-pages 6.8" msgstr "Linux man-pages 6.7" #. 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, 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 Eunistd.hE>\n" msgstr "B<#include Eunistd.hE>\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\n" msgstr "B\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(7)):" msgstr "" "Требования макроса тестирования свойств для glibc (см. " "B(7)):" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "B():" msgstr "B():" #. || _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=\\ 500) && ! (_POSIX_C_SOURCE\\ E=\\ 200809L)\n" #| " || /* Since glibc 2.19: */ _DEFAULT_SOURCE\n" #| " || /* Glibc versions E= 2.19: */ _BSD_SOURCE\n" msgid "" " Since glibc 2.12:\n" " (_XOPEN_SOURCE E= 500) && ! (_POSIX_C_SOURCE E= 200809L)\n" " || /* Since glibc 2.19: */ _DEFAULT_SOURCE\n" " || /* glibc E= 2.19: */ _BSD_SOURCE\n" " Before glibc 2.12:\n" " _BSD_SOURCE || _XOPEN_SOURCE E= 500\n" msgstr "" "(_XOPEN_SOURCE\\ E=\\ 500) && ! (_POSIX_C_SOURCE\\ E=\\ 200809L)\n" " || /* начиная с glibc 2.19: */ _DEFAULT_SOURCE\n" " || /* в версиях glibc E= 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() function has the same effect as B(2), " "except that the behavior is undefined if the process created by B() " "either modifies any data other than a variable of type I used to " "store the return value from B(), or returns from the function in " "which B() was called, or calls any other function before " "successfully calling B<_exit>(2) or one of the B(3) family of " "functions." msgstr "" "(Из POSIX) Функция B() аналогична B(2) за тем исключением, что " "поведение не определено, если процесс, созданный B(), изменяет любые " "данные, кроме переменной типа I, используемой в качестве значения, " "возвращаемого B(), или возвращается из функции, из которой была " "вызвана функция B(), или вызывает любую функцию до удачного " "исполнения B<_exit>(2) или одной из функций семейства B(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(), just like B(2), creates a child process of the calling " "process. For details and return value and errors, see B(2)." msgstr "" "B(), так же как и B(2), создаёт дочерний процесс для " "вызывающего процесса. Подробности, возвращаемые значения и ошибки смотрите " "в B(2)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() is a special case of B(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(2)." msgstr "" "B() \\(em это специальный вариант B(2). Он используется для " "создания новых процессов без копирования таблиц страниц родительского " "процесса. Это может использоваться в приложениях, критичных к " "производительности, для создания дочерних процессов, сразу же запускающих " "B(2)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "B() differs from B(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(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(3) (which would have the effect of calling exit " "handlers established by the parent process and flushing the parent's " "B(3) buffers), but may call B<_exit>(2)." msgstr "" "Вызов B() отличается от B(2) тем, что вызывающая нить " "блокируется до тех пор, пока не завершится потомок (обычно, вызовом " "B<_exit>(2) или, что ненормально, из-за принятого необработанного сигнала) " "или не выполнит B(2). До этих пор потомок имеет общую память с " "родителем, включая стек. Потомок не должен выходить из текущей функции или " "вызывать B(3) (что приводит к вызовы обработчиков выхода, настроенных " "родительским процессом и сбрасывает буферы B(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(2), the child process created by B() inherits copies " "of various of the caller's process attributes (e.g., file descriptors, " "signal dispositions, and current working directory); the B() call " "differs only in the treatment of the virtual address space, as described " "above." msgstr "" "Как и у B(2), дочерний процесс, созданный B(), наследует копии " "различных атрибутов вызвавшего процесса (например, дескрипторы файлов, " "обработчики сигналов и текущий рабочий каталог); вызов B() отличается " "только в применении виртуального адресного пространства (как описывалось " "выше)." #. 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(2))." msgstr "" "Сигналы передаются родителю после того, как потомок разблокирует его память " "(т.е. после того, как потомок завершится или вызовет B(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(2) is implemented using copy-on-write pages, so the " "only penalty incurred by B(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(2) would require " "making a complete copy of the caller's data space, often needlessly, since " "usually immediately afterward an B(3) is done. Thus, for greater " "efficiency, BSD introduced the B() 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(2) or an exit " "occurred. The parent process was suspended while the child was using its " "resources. The use of B() was tricky: for example, not modifying " "data in the parent process depended on knowing which variables were held in " "a register." msgstr "" "В Linux вызов B(2) реализован при помощи страниц, «копируемых при " "записи» (copy-on-write), поэтому единственная задержка, возникающая при " "вызове B(2) \\(em это время, необходимое для создания копии таблиц " "страниц родительского процесса и уникальной структуры описания задачи " "дочернего процесса. Однако, в прошлом для B(2) могло требоваться " "создание полной копии пространства данных вызывающего процесса, что часто " "было ненужно, так как в потомке сразу следовал запуск функции B(3). " "Поэтому для большей эффективности в BSD был предложен системный вызов " "B(), который не копировал адресное пространство процесса, а " "использовал то же самое пространство и управления нитью, блокируя " "родительский процесс до вызова B(2) или до прекращения работы " "потомка. Родительский процесс останавливался до тех пор, пока потомок " "использовал его ресурсы. Использование B() было ненадёжно: например, " "сохранность данных родительского процесса зависела от того, хранились ли на " "тот момент переменные в регистрах." #. 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() by the standards are weaker than those " "put on B(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(2), " "and cannot rely on any specific behavior with respect to shared memory." msgstr "" "Требования, предъявляемые стандартами к B(), не такие жёсткие как те, " "которые предъявляются к B(2), поэтому в реализации достаточно просто " "сделать их синонимами. В частности, программист не может полагаться на " "блокировку родителя до завершения потомка или до вызова им B(2), и " "не может полагаться на специфическое поведение возникновения общей памяти." #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, fuzzy #| msgid "" #| "Some consider the semantics of B() 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() as it " #| "will, in that case, be made synonymous to B(2).\" However, even " #| "though modern memory management hardware has decreased the performance " #| "difference between B(2) and B(), there are various reasons " #| "why Linux and other systems have retained B():" msgid "" "Some consider the semantics of B() 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 as it will, in that case, " "be made synonymous to I.\\[rq] However, even though modern memory " "management hardware has decreased the performance difference between " "B(2) and B(), there are various reasons why Linux and other " "systems have retained B():" msgstr "" "Некоторые считают, что в семантике B() есть архитектурный недостаток, " "а в справочной странице BSD написано следующее: «Данный системный вызов " "будет удалён после того, как будут правильно реализованы соответствующие " "механизмы разделения ресурсов системы. Пользователи не должны опираться на " "существующую семантику общей памяти B(), то есть программа должна " "быть аналогична программе с B(2)». Однако, даже при том, что " "современные аппаратные средства управления памятью уменьшили разницу в " "производительности между B(2) и B(), есть другие причины почему " "в Linux и других операционных системах B() ещё существует:" #. 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()." msgstr "" "Для некоторых критичных к производительности приложений очень важна та " "маленькая прибавка к производительности, предоставляемая B()." #. 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() can be implemented on systems that lack a memory-management " #| "unit (MMU), but B(2) can't be implemented on such systems. " #| "(POSIX.1-2008 removed B() from the standard; the POSIX rationale " #| "for the B(3) function notes that that function, which " #| "provides functionality equivalent to B(2)+B(3), is designed " #| "to be implementable on systems that lack an MMU.)" msgid "" "B() can be implemented on systems that lack a memory-management unit " "(MMU), but B(2) can't be implemented on such systems. (POSIX.1-2008 " "removed B() from the standard; the POSIX rationale for the " "B(3) function notes that that function, which provides " "functionality equivalent to B(2)+ B(3), is designed to be " "implementable on systems that lack an MMU.)" msgstr "" "Вызов B() может быть реализован в системах, у которых нет блока " "управления памятью (MMU), а B(2) невозможно реализовать на таких " "системах (из POSIX.1-2008 вызов B() удалён; для реализации " "эквивалента B(2)+B(3) в системах без MMU в POSIX предлагается " "использовать функцию B(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() avoids the need to " "temporarily commit memory (see the description of I in B(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(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() при запуске новой программы " "не выполняет временное выделение памяти (смотрите описание I в B(5)) (это особенно полезно, если огромный " "родительский процесс хочет выполнить маленькую вспомогательную программу в " "дочернем процессе). Вызов B(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(3) are not called when a " "multithreaded program employing the NPTL threading library calls " "B(). Fork handlers are called in this case in a program using the " "LinuxThreads threading library. (See B(7) for a description of " "Linux threading libraries.)" msgstr "" "Обработчики fork, установленные с помощью B(3), не " "вызываются когда многонитиевая программа использует вызовы библиотеки нитей " "NPTL B(). Обработчики fork вызываются в этом случае в программе, в " "которой используется библиотека нитей LinuxThreads. (См. в B(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() is equivalent to calling B(2) with I " "specified as:" msgstr "" "Вызов B() эквивалентен вызову B(2) со следующим значением " "I:" #. 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()." msgstr "" "4.3BSD; POSIX.1-2001 (помечен как УСТАРЕВШИЙ). Из POSIX.1-2008 описание " "B() было удалено." #. 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() system call appeared in 3.0BSD. In 4.4BSD it was made " #| "synonymous to B(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(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() system call appeared in 3.0BSD. In 4.4BSD it was made " "synonymous to B(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(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() впервые появился в 30BSD. В 4.4BSD он стал " "синонимом B(2), но в NetBSD он был введён снова; смотрите E<.UR http://" "www.netbsd.org\\:/Documentation\\:/kernel\\:/vfork.html> E<.UE .> В Linux " "этот системный вызов был эквивалентом B(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() 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()), изменяет память, то эти изменения могут " "привести к нарушению целостности состояния процесса с точки зрения родителя " "(например, изменения памяти были бы видны родителю, а изменения состояния " "открытых файловых дескрипторов не видны)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "When B() 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(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(). After the B(), 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(3)). In this case, attacks are possible where the parent process " "uses B(2) to map in code that will be executed by the privileged " "child process." msgstr "" "Если B() вызывается многонитиевом процессе, то в ожидании завершения " "процесса или запуска новой программы приостанавливается только вызывающая " "нить. Это означает, что потомок совместно использует адресное пространство " "другим выполняющимся кодом. Это может быть опасно, если другая нить в " "родительском процессе изменяет полномочия (с помощью B(2) и " "подобных), так как теперь есть два процесса с разным уровнем прав, " "выполняемых в одном адресном пространстве. Как пример представим, что " "многонитиевая программа, работающая с правами суперпользователя, создаёт " "потомка с помощью B(). После B() нить в родительском процессе " "понижает права процесса до непривилегированных, чтобы выполнить некий " "недоверенный код (например, модуль, открытый через B(3)). В этом " "случае появляется уязвимость, если родительский процесс использует " "B(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() are never sent B " "or B signals; rather, output or Is are allowed and input " "attempts result in an end-of-file indication.\"" msgstr "" "Обработка сигналов ещё более запутана и различается от системы к системе. В " "справочной странице BSD написано следующее: «Для исключения возможности " "взаимных блокировок процессы, находящиеся в середине исполнения B(), " "никогда не получат сигналов B или B, хотя вывод или " "I всегда разрешены, а попытки ввода приводят к ситуации появления " "конца файла»." #. 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(2), B(2), B<_exit>(2), B(2), B(2), B(2)" msgstr "" "B(2), B(2), B<_exit>(2), B(2), B(2), B(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() 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() as it " #| "will, in that case, be made synonymous to B(2).\" However, even " #| "though modern memory management hardware has decreased the performance " #| "difference between B(2) and B(), there are various reasons " #| "why Linux and other systems have retained B():" msgid "" "Some consider the semantics of B() 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() as it will, in that case, be " "made synonymous to B(2). \" However, even though modern memory " "management hardware has decreased the performance difference between " "B(2) and B(), there are various reasons why Linux and other " "systems have retained B():" msgstr "" "Некоторые считают, что в семантике B() есть архитектурный недостаток, " "а в справочной странице BSD написано следующее: «Данный системный вызов " "будет удалён после того, как будут правильно реализованы соответствующие " "механизмы разделения ресурсов системы. Пользователи не должны опираться на " "существующую семантику общей памяти B(), то есть программа должна " "быть аналогична программе с B(2)». Однако, даже при том, что " "современные аппаратные средства управления памятью уменьшили разницу в " "производительности между B(2) и B(), есть другие причины почему " "в Linux и других операционных системах B() ещё существует:" #. type: SS #: debian-bookworm #, no-wrap msgid "Caveats" msgstr "Предостережения" #. type: SS #: debian-bookworm #, no-wrap msgid "History" msgstr "История" #. type: TH #: fedora-40 fedora-rawhide mageia-cauldron #, no-wrap msgid "2023-10-31" msgstr "31 октября 2023 г." #. type: TH #: fedora-40 mageia-cauldron #, no-wrap msgid "Linux man-pages 6.06" msgstr "Linux man-pages 6.06" #. type: TH #: fedora-rawhide #, no-wrap msgid "Linux man-pages 6.7" msgstr "Linux man-pages 6.7" #. 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" #. type: TH #: opensuse-tumbleweed #, fuzzy, no-wrap #| msgid "Linux man-pages 6.7" msgid "Linux man-pages (unreleased)" msgstr "Linux man-pages 6.7"