diff options
Diffstat (limited to 'po/ru/man3/setjmp.3.po')
-rw-r--r-- | po/ru/man3/setjmp.3.po | 760 |
1 files changed, 760 insertions, 0 deletions
diff --git a/po/ru/man3/setjmp.3.po b/po/ru/man3/setjmp.3.po new file mode 100644 index 00000000..0ba3547d --- /dev/null +++ b/po/ru/man3/setjmp.3.po @@ -0,0 +1,760 @@ +# Russian translation of manpages +# This file is distributed under the same license as the manpages-l10n package. +# Copyright © of this file: +# Alexander Golubev <fatzer2@gmail.com>, 2018. +# Azamat Hackimov <azamat.hackimov@gmail.com>, 2011, 2014-2016. +# Hotellook, 2014. +# Nikita <zxcvbnm3230@mail.ru>, 2014. +# Spiros Georgaras <sng@hellug.gr>, 2016. +# Vladislav <ivladislavefimov@gmail.com>, 2015. +# Yuri Kozlov <yuray@komyakino.ru>, 2011-2019. +# Иван Павлов <pavia00@gmail.com>, 2017. +msgid "" +msgstr "" +"Project-Id-Version: manpages-l10n\n" +"POT-Creation-Date: 2024-03-01 17:07+0100\n" +"PO-Revision-Date: 2019-10-15 18:55+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 "setjmp" +msgstr "" + +#. 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 "setjmp, sigsetjmp, longjmp, siglongjmp - performing a nonlocal goto" +msgstr "setjmp, sigsetjmp, longjmp, siglongjmp - выполняет нелокальный переход" + +#. 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>setjmp.hE<gt>>\n" +msgstr "B<#include E<lt>setjmp.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<int setjmp(jmp_buf >I<env>B<);>\n" +"B<int sigsetjmp(sigjmp_buf >I<env>B<, int >I<savesigs>B<);>\n" +msgstr "" +"B<int setjmp(jmp_buf >I<env>B<);>\n" +"B<int sigsetjmp(sigjmp_buf >I<env>B<, int >I<savesigs>B<);>\n" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy, no-wrap +#| msgid "" +#| "B<void longjmp(jmp_buf >I<env>B<, int >I<val>B<);>\n" +#| "B<void siglongjmp(sigjmp_buf >I<env>B<, int >I<val>B<);>\n" +msgid "" +"B<[[noreturn]] void longjmp(jmp_buf >I<env>B<, int >I<val>B<);>\n" +"B<[[noreturn]] void siglongjmp(sigjmp_buf >I<env>B<, int >I<val>B<);>\n" +msgstr "" +"B<void longjmp(jmp_buf >I<env>B<, int >I<val>B<);>\n" +"B<void siglongjmp(sigjmp_buf >I<env>B<, int >I<val>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<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<setjmp>(): see NOTES." +msgstr "B<setjmp>(): смотрите ЗАМЕЧАНИЯ." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "B<sigset>(3)" +msgid "B<sigsetjmp>():" +msgstr "B<sigset>(3)" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid " _POSIX_C_SOURCE\n" +msgstr " _POSIX_C_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: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The functions described on this page are used for performing \"nonlocal " +"gotos\": transferring execution from one function to a predetermined " +"location in another function. The B<setjmp>() function dynamically " +"establishes the target to which control will later be transferred, and " +"B<longjmp>() performs the transfer of execution." +msgstr "" +"Функции, описываемые в этой странице, используются для выполнения " +"«нелокального goto»: передачи исполнения из одной функции в заранее " +"определённое место другой. Функция B<setjmp>() динамически устанавливает " +"точку для будущей передачи исполнения, а B<longjmp>() выполняет передачу " +"исполнения." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<setjmp>() function saves various information about the calling " +"environment (typically, the stack pointer, the instruction pointer, possibly " +"the values of other registers and the signal mask) in the buffer I<env> for " +"later use by B<longjmp>(). In this case, B<setjmp>() returns 0." +msgstr "" +"Функция B<setjmp>() сохраняет различную информацию об окружении вызова " +"(обычно, указатель стека, указатель инструкции, значения других регистров и " +"маску сигналов) в буфер I<env> для последующего использования в " +"B<longjmp>(). В этом случае B<setjmp>() возвращает 0." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"The B<longjmp>() function uses the information saved in I<env> to transfer " +"control back to the point where B<setjmp>() was called and to restore " +"(\"rewind\") the stack to its state at the time of the B<setjmp>() call. " +"In addition, and depending on the implementation (see NOTES), the values of " +"some other registers and the process signal mask may be restored to their " +"state at the time of the B<setjmp>() call." +msgstr "" +"Функция B<longjmp>() использует информацию, сохранённую в I<env>, для " +"передачи управления обратно в точку, откуда была вызвана B<setjmp>(), и " +"восстанавливает («отматывает») стек до состояния на время вызова " +"B<setjmp>(). Также, в зависимости от реализации (смотрите ЗАМЕЧАНИЯ), " +"значения некоторых регистров маска сигналов процесса могут быть " +"восстановлены в их состояние на момент вызова B<setjmp>()." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Following a successful B<longjmp>(), execution continues as if B<setjmp>() " +"had returned for a second time. This \"fake\" return can be distinguished " +"from a true B<setjmp>() call because the \"fake\" return returns the value " +"provided in I<val>. If the programmer mistakenly passes the value 0 in " +"I<val>, the \"fake\" return will instead return 1." +msgstr "" +"После успешного вызова B<longjmp>() выполнение продолжается как если бы " +"B<setjmp>() была вызвана второй раз. Этот «фиктивный» возврат можно " +"распознать от настоящего вызова B<setjmp>(), так как «фиктивный» возврат " +"возвращает значение, указанное в I<val>. Если программист ошибочно передаст " +"значение 0 в I<val>, то «фиктивный» возврат вернёт вместо него 1." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "sigsetjmp() and siglongjmp()" +msgstr "sigsetjmp() и siglongjmp()" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<sigsetjmp>() and B<siglongjmp>() also perform nonlocal gotos, but " +"provide predictable handling of the process signal mask." +msgstr "" +"Функции B<sigsetjmp>() и B<siglongjmp>() также выполняют нелокальные " +"переходы, но предоставляют предсказуемую обработку сигнальной маски процесса." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If, and only if, the I<savesigs> argument provided to B<sigsetjmp>() is " +"nonzero, the process's current signal mask is saved in I<env> and will be " +"restored if a B<siglongjmp>() is later performed with this I<env>." +msgstr "" +"Если, и только если, аргумент I<savesigs>, передаваемый в B<sigsetjmp>(), не " +"равен нулю, то текущая маска сигналов процесса сохраняется в I<env> и будет " +"восстановлена, если позднее будет запущена B<siglongjmp>() с этим I<env>." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "RETURN VALUE" +msgstr "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<setjmp>() and B<sigsetjmp>() return 0 when called directly; on the " +"\"fake\" return that occurs after B<longjmp>() or B<siglongjmp>(), the " +"nonzero value specified in I<val> is returned." +msgstr "" +"Функции B<setjmp>() и B<sigsetjmp>() возвращают 0, если вызывают явно; при " +"«фиктивном» возврате, который возникает после B<longjmp>() или " +"B<siglongjmp>(), возвращается ненулевое значение, указанное в I<val>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "The B<longjmp>() or B<siglongjmp>() functions do not return." +msgstr "Функции B<longjmp>() и B<siglongjmp>() не выполняют возврат." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "ATTRIBUTES" +msgstr "АТРИБУТЫ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"For an explanation of the terms used in this section, see B<attributes>(7)." +msgstr "Описание терминов данного раздела смотрите в B<attributes>(7)." + +#. type: tbl table +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Interface" +msgstr "Интерфейс" + +#. type: tbl table +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Attribute" +msgstr "Атрибут" + +#. type: tbl table +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Value" +msgstr "Значение" + +#. type: tbl table +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-tumbleweed +#, no-wrap +msgid ".na\n" +msgstr ".na\n" + +#. type: tbl table +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-tumbleweed +#, no-wrap +msgid ".nh\n" +msgstr ".nh\n" + +#. type: tbl table +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"B<setjmp>(),\n" +"B<sigsetjmp>()" +msgstr "" +"B<setjmp>(),\n" +"B<sigsetjmp>()" + +#. type: tbl table +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Thread safety" +msgstr "Безвредность в нитях" + +#. type: tbl table +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "MT-Safe" +msgstr "MT-Safe" + +#. type: tbl table +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "" +"B<longjmp>(),\n" +"B<siglongjmp>()" +msgstr "" +"B<longjmp>(),\n" +"B<siglongjmp>()" + +#. 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: TP +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy, no-wrap +#| msgid "B<sigset>(3)" +msgid "B<setjmp>()" +msgstr "B<sigset>(3)" + +#. type: TQ +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy, no-wrap +#| msgid "B<sigset>(3)" +msgid "B<longjmp>()" +msgstr "B<sigset>(3)" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +msgid "C11, POSIX.1-2008." +msgstr "C11, POSIX.1-2008." + +#. type: TP +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy, no-wrap +#| msgid "B<sigset>(3)" +msgid "B<sigsetjmp>()" +msgstr "B<sigset>(3)" + +#. type: TQ +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy, no-wrap +#| msgid "B<sigset>(3)" +msgid "B<siglongjmp>()" +msgstr "B<sigset>(3)" + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +msgid "POSIX.1-2008." +msgstr "POSIX.1-2008." + +#. 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-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +msgid "POSIX.1-2001, C89." +msgstr "POSIX.1-2001, C89." + +#. type: Plain text +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +msgid "POSIX.1-2001." +msgstr "POSIX.1-2001." + +#. so that _FAVOR_BSD is triggered +#. .BR _XOPEN_SOURCE_EXTENDED , +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, fuzzy +#| msgid "" +#| "POSIX does not specify whether B<setjmp>() will save the signal mask (to " +#| "be later restored during B<longjmp>()). In System V it will not. In " +#| "4.3BSD it will, and there is a function B<_setjmp>() that will not. The " +#| "behavior under Linux depends on the glibc version and the setting of " +#| "feature test macros. On Linux with glibc versions before 2.19, " +#| "B<setjmp>() follows the System V behavior by default, but the BSD " +#| "behavior is provided if the B<_BSD_SOURCE> feature test macro is " +#| "explicitly defined and none of B<_POSIX_SOURCE>, B<_POSIX_C_SOURCE>, " +#| "B<_XOPEN_SOURCE>, B<_GNU_SOURCE>, or B<_SVID_SOURCE> is defined. Since " +#| "glibc 2.19, I<E<lt>setjmp.hE<gt>> exposes only the System V version of " +#| "B<setjmp>(). Programs that need the BSD semantics should replace calls " +#| "to B<setjmp>() with calls to B<sigsetjmp>() with a nonzero I<savesigs> " +#| "argument." +msgid "" +"POSIX does not specify whether B<setjmp>() will save the signal mask (to be " +"later restored during B<longjmp>()). In System V it will not. In 4.3BSD it " +"will, and there is a function B<_setjmp>() that will not. The behavior " +"under Linux depends on the glibc version and the setting of feature test " +"macros. Before glibc 2.19, B<setjmp>() follows the System V behavior by " +"default, but the BSD behavior is provided if the B<_BSD_SOURCE> feature test " +"macro is explicitly defined and none of B<_POSIX_SOURCE>, " +"B<_POSIX_C_SOURCE>, B<_XOPEN_SOURCE>, B<_GNU_SOURCE>, or B<_SVID_SOURCE> is " +"defined. Since glibc 2.19, I<E<lt>setjmp.hE<gt>> exposes only the System V " +"version of B<setjmp>(). Programs that need the BSD semantics should replace " +"calls to B<setjmp>() with calls to B<sigsetjmp>() with a nonzero " +"I<savesigs> argument." +msgstr "" +"В POSIX не уточняется, должна ли B<setjmp>() сохранять сигнальную маску " +"(чтобы позднее восстановить её при B<longjmp>()). В System V — не должна. В " +"4.3BSD сохранение выполняется и есть функция B<_setjmp>, в которой этого не " +"происходит. Поведение в Linux зависит от версии glibc и установленных " +"макросов тестирования свойств. В Linux с glibc до версии 2.19 функция " +"B<setjmp>() по умолчанию ведёт себя как в System V, но можно включить " +"поведение как в BSD, если определить макрос тестирования свойств " +"B<_BSD_SOURCE> и будут не определены B<_POSIX_SOURCE>, B<_POSIX_C_SOURCE>, " +"B<_XOPEN_SOURCE>, B<_GNU_SOURCE> или B<_SVID_SOURCE>. Начиная с glibc 2.19, " +"в I<E<lt>setjmp.hE<gt>> представляется только версия System V для " +"B<setjmp>(). Если в программе нужно задействовать семантику BSD, замените " +"вызовы B<setjmp>() на вызовы B<sigsetjmp>() с ненулевым аргументом " +"I<savesigs>." + +#. type: SH +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "NOTES" +msgstr "ЗАМЕЧАНИЯ" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"B<setjmp>() and B<longjmp>() can be useful for dealing with errors inside " +"deeply nested function calls or to allow a signal handler to pass control to " +"a specific point in the program, rather than returning to the point where " +"the handler interrupted the main program. In the latter case, if you want " +"to portably save and restore signal masks, use B<sigsetjmp>() and " +"B<siglongjmp>(). See also the discussion of program readability below." +msgstr "" +"Функции B<setjmp>() и B<longjmp>() можно использовать для обработки ошибок " +"внутри глубоко вложенных вызовов функций или чтобы позволить обработчику " +"сигналов передать управление в определённую точку программы, и не возвращать " +"исполнение главной программе в точку прерывания обработчиком. В последнем " +"случае, если вы хотите сохранить и восстановить маску сигналов переносимым " +"образом, то используйте B<sigsetjmp>() и B<siglongjmp>(). Также смотрите " +"раздел про читаемость программы далее." + +#. 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 compiler may optimize variables into registers, and B<longjmp>() may " +"restore the values of other registers in addition to the stack pointer and " +"program counter. Consequently, the values of automatic variables are " +"unspecified after a call to B<longjmp>() if they meet all the following " +"criteria:" +msgstr "" +"Компилятор может оптимизировать переменные в регистрах и B<longjmp>() может " +"восстановить значения регистров помимо указателя стека и счётчика программы. " +"Следовательно, значения автоматических переменных непредсказуемы после " +"вызова B<longjmp>(), если они удовлетворяют следующим критериям:" + +#. 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 "" +"they are local to the function that made the corresponding B<setjmp>() call;" +msgstr "" +"они локальны для функции, которая сделала соответствующий вызов B<setjmp>();" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"their values are changed between the calls to B<setjmp>() and B<longjmp>(); " +"and" +msgstr "их значения изменились между вызовами B<setjmp>() и B<longjmp>(); и" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "they are not declared as I<volatile>." +msgstr "они не объявлены как I<volatile>." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "Analogous remarks apply for B<siglongjmp>()." +msgstr "Аналогичные замечания относятся и к B<siglongjmp>()." + +#. type: SS +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Nonlocal gotos and program readability" +msgstr "Нелокальные переходы и читаемость программы" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"While it can be abused, the traditional C \"goto\" statement at least has " +"the benefit that lexical cues (the goto statement and the target label) " +"allow the programmer to easily perceive the flow of control. Nonlocal gotos " +"provide no such cues: multiple B<setjmp>() calls might employ the same " +"I<jmp_buf> variable so that the content of the variable may change over the " +"lifetime of the application. Consequently, the programmer may be forced to " +"perform detailed reading of the code to determine the dynamic target of a " +"particular B<longjmp>() call. (To make the programmer's life easier, each " +"B<setjmp>() call should employ a unique I<jmp_buf> variable.)" +msgstr "" +"Хотя этим и можно злоупотребить, обычный оператор C «goto» имеет " +"преимущество в виде лексических отметок (оператор goto и метка перехода), " +"которые позволяют программисту легко понять поток выполнения. Нелокальные " +"переходы не имеют таких отметок: многократные вызовы B<setjmp>() могут " +"использовать одну переменную I<jmp_buf>, то есть контекст переменной может " +"изменяться на протяжении времени работы приложения. Следовательно, " +"программисту придёт вчитываться в код для определения динамической точки " +"перехода определённого вызова B<longjmp>() (для облегчения жизни " +"программиста в каждом вызове B<setjmp>() должна использоваться уникальная " +"переменная I<jmp_buf>)." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Adding further difficulty, the B<setjmp>() and B<longjmp>() calls may not " +"even be in the same source code module." +msgstr "" +"Дополнительная сложность: вызовы B<setjmp>() и B<longjmp>() даже могут быть " +"в разных модулях исходного кода." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"In summary, nonlocal gotos can make programs harder to understand and " +"maintain, and an alternative should be used if possible." +msgstr "" +"Таким образом, нелокальные переходы могут сделать программу тяжелее для " +"понимания и поддержки, и, если это возможно, нужно использовать " +"альтернативные варианты." + +#. type: SS +#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron +#: opensuse-leap-15-6 opensuse-tumbleweed +#, no-wrap +msgid "Undefined Behavior" +msgstr "" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If the function which called B<setjmp>() returns before B<longjmp>() is " +"called, the behavior is undefined. Some kind of subtle or unsubtle chaos is " +"sure to result." +msgstr "" +"Если функция, вызвавшая B<setjmp>() завершилась до вызова B<longjmp>(), то " +"поведение не определено. Результатом может стать маленький (или не очень) " +"хаос." + +#. The following statement appeared in versions up to POSIX.1-2008 TC1, +#. but is set to be removed in POSIX.1-2008 TC2: +#. According to POSIX.1, if a +#. .BR longjmp () +#. call is performed from a nested signal handler +#. (i.e., from a handler that was invoked in response to a signal that was +#. generated while another signal was already in the process of being +#. handled), the behavior is undefined. +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"If, in a multithreaded program, a B<longjmp>() call employs an I<env> " +"buffer that was initialized by a call to B<setjmp>() in a different thread, " +"the behavior is undefined." +msgstr "" +"Если в многонитевой программе вызов B<longjmp>() использует буфер I<env>, " +"инициализированный вызовом B<setjmp>() в другой нити, то поведение не " +"определено." + +#. http://austingroupbugs.net/view.php?id=516#c1195 +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"POSIX.1-2008 Technical Corrigendum 2 adds B<longjmp>() and B<siglongjmp>() " +"to the list of async-signal-safe functions. However, the standard " +"recommends avoiding the use of these functions from signal handlers and goes " +"on to point out that if these functions are called from a signal handler " +"that interrupted a call to a non-async-signal-safe function (or some " +"equivalent, such as the steps equivalent to B<exit>(3) that occur upon a " +"return from the initial call to I<main>()), the behavior is undefined if the " +"program subsequently makes a call to a non-async-signal-safe function. The " +"only way of avoiding undefined behavior is to ensure one of the following:" +msgstr "" +"В POSIX.1-2008 Technical Corrigendum 2 вызовы B<longjmp>() и B<siglongjmp>() " +"добавлены в список функций async-signal-safe. Однако стандарт рекомендует " +"избегать использования этих функций в обработчиках сигналов и указывает, что " +"если эти функции вызваны из обработчика сигналов, который прервал вызов " +"функции не async-signal-safe (или её эквивалент, например шагам B<exit>(3), " +"который возникают при возврате из начального вызова I<main>()), то " +"поведение не определено, если программа далее вызывает функцию не async-" +"signal-safe. Единственным способом избежать неопределённого поведения, " +"является проверка следующего:" + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"After long jumping from the signal handler, the program does not call any " +"non-async-signal-safe functions and does not return from the initial call to " +"I<main>()." +msgstr "" +"После длинного перехода из обработчика сигналов программа не вызывает каких-" +"либо функций не async-signal-safe и не возвращается из первоначального " +"вызова в I<main>()." + +#. type: Plain text +#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide +#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed +msgid "" +"Any signal whose handler performs a long jump must be blocked during " +"I<every> call to a non-async-signal-safe function and no non-async-signal-" +"safe functions are called after returning from the initial call to I<main>()." +msgstr "" +"Любой сигнал, чей обработчик выполняет длинный переход, должен быть " +"заблокирован на время I<каждого> вызова функции не async-signal-safe и не " +"вызывать функции не async-signal-safe после возврата из начального вызова в " +"I<main>()." + +#. 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<signal>(7), B<signal-safety>(7)" +msgstr "B<signal>(7), B<signal-safety>(7)" + +#. 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: Plain text +#: debian-bookworm +#, fuzzy +#| msgid "B<setjmp>(), B<longjmp>(): POSIX.1-2001, POSIX.1-2008, C89, C99." +msgid "B<setjmp>(), B<longjmp>(): POSIX.1-2001, POSIX.1-2008, C99." +msgstr "B<setjmp>(), B<longjmp>(): POSIX.1-2001, POSIX.1-2008, C89, C99." + +#. type: Plain text +#: debian-bookworm +msgid "B<sigsetjmp>(), B<siglongjmp>(): POSIX.1-2001, POSIX.1-2008." +msgstr "B<sigsetjmp>(), B<siglongjmp>(): POSIX.1-2001, POSIX.1-2008." + +#. type: SS +#: debian-bookworm +#, no-wrap +msgid "Caveats" +msgstr "Предостережения" + +#. type: TH +#: debian-unstable opensuse-tumbleweed +#, no-wrap +msgid "2023-07-20" +msgstr "20 июля 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" |