# Russian translation of manpages # This file is distributed under the same license as the manpages-l10n package. # Copyright © of this file: # Alexey, 2016. # Azamat Hackimov , 2014-2017. # kogamatranslator49 , 2015. # Darima Kogan , 2014. # Max Is , 2016. # Yuri Kozlov , 2011-2019. # Иван Павлов , 2017. msgid "" msgstr "" "Project-Id-Version: manpages-l10n\n" "POT-Creation-Date: 2024-06-01 06:13+0200\n" "PO-Revision-Date: 2019-10-12 08:58+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 "pthread_cleanup_push" msgstr "" #. 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 #, fuzzy #| msgid "" #| "pthread_cleanup_push, pthread_cleanup_pop - push and pop thread " #| "cancellation clean-up handlers" msgid "" "pthread_cleanup_push, pthread_cleanup_pop - push and pop thread cancelation " "clean-up handlers" msgstr "" "pthread_cleanup_push, pthread_cleanup_pop - помещает и выталкивает очищающие " "обработчики при отмене нити" #. 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 "POSIX threads library (I, I<-lpthread>)" 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 Epthread.hE>\n" msgstr "B<#include Epthread.hE>\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 "" #| "BIB<)(void *),>\n" #| "B< void *>IB<);>\n" #| "BIB<);>\n" msgid "" "BIB<)(void *), void *>IB<);>\n" "BIB<);>\n" msgstr "" "BIB<)(void *),>\n" "B< void *>IB<);>\n" "BIB<);>\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 #, fuzzy #| msgid "" #| "These functions manipulate the calling thread's stack of thread-" #| "cancellation clean-up handlers. A clean-up handler is a function that is " #| "automatically executed when a thread is canceled (or in various other " #| "circumstances described below); it might, for example, unlock a mutex so " #| "that it becomes available to other threads in the process." msgid "" "These functions manipulate the calling thread's stack of thread-cancelation " "clean-up handlers. A clean-up handler is a function that is automatically " "executed when a thread is canceled (or in various other circumstances " "described below); it might, for example, unlock a mutex so that it becomes " "available to other threads in the process." msgstr "" "Данные функции управляют стеком нити, вызывающим очищающие обработчики при " "отмене нити. Очищающий обработчик — это функция, которая автоматически " "вызывается при отмене нити (или в при других обстоятельствах, описанных " "ниже); это может быть, например, отмена блокировки мьютекса, при которой он " "становится доступным другим нитям процесса." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B() function pushes I onto the top of " "the stack of clean-up handlers. When I is later invoked, it will " "be given I as its argument." msgstr "" "Функция B() помещает обработчик I наверх " "стека очищающих обработчиков. Позднее, при вызове I, ему будет " "передан I в качестве аргумента." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "The B() function removes the routine at the top of the " "stack of clean-up handlers, and optionally executes it if I is " "nonzero." msgstr "" "Функция B() удаляет обработчик с вершины стека " "очищающих обработчиков, и, возможно, выполняет его, если I не равно " "нулю." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, fuzzy #| msgid "" #| "A cancellation clean-up handler is popped from the stack and executed in " #| "the following circumstances:" msgid "" "A cancelation clean-up handler is popped from the stack and executed in the " "following circumstances:" msgstr "" "Очищающий обработчик при отмене выталкивается из стека и выполняется при " "следующих условиях:" #. 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 "" "When a thread is canceled, all of the stacked clean-up handlers are popped " "and executed in the reverse of the order in which they were pushed onto the " "stack." msgstr "" "Когда нить отменяется, все очищающие обработчики из стека выталкиваются и " "вызываются в обратном порядке их помещения в стек." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "When a thread terminates by calling B(3), all clean-up " "handlers are executed as described in the preceding point. (Clean-up " "handlers are I called if the thread terminates by performing a " "I from the thread start function.)" msgstr "" "Когда нить завершается вызовом B(3), все очищающие обработчики " "выполняются как описано в предыдущем пункте (очищающие обработчики I<не> " "вызываются, если нить завершается I<возвратом> из начальной функции нити)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "When a thread calls B() with a nonzero I " "argument, the top-most clean-up handler is popped and executed." msgstr "" "Когда нить вызывает B() с ненулевым значением аргумента " "I, самый верхний очищающий обработчик выталкивается и выполняется." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, fuzzy #| msgid "" #| "POSIX.1 permits B() and B() " #| "to be implemented as macros that expand to text containing \\(aqB<{>\\(aq " #| "and \\(aqB<}>\\(aq, respectively. For this reason, the caller must " #| "ensure that calls to these functions are paired within the same function, " #| "and at the same lexical nesting level. (In other words, a clean-up " #| "handler is established only during the execution of a specified section " #| "of code.)" msgid "" "POSIX.1 permits B() and B() to " "be implemented as macros that expand to text containing \\[aq]B<{>\\[aq] and " "\\[aq]B<}>\\[aq], respectively. For this reason, the caller must ensure " "that calls to these functions are paired within the same function, and at " "the same lexical nesting level. (In other words, a clean-up handler is " "established only during the execution of a specified section of code.)" msgstr "" "В POSIX.1 допускается реализация B() и " "B() в виде макросов, которые раскрывают текст, " "содержащий \\(aqB<{>\\(aq и \\(aqB<}>\\(aq, соответственно. По этой причине, " "вызывающий должен убедиться, что вызовы этих функций используются парно в " "одной функции и на одном лексическом уровне вложенности (другими словами, " "очищающий обработчик устанавливается только во время выполнения определённой " "секции кода)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "Calling B(3) (B(3)) produces undefined results if any " "call has been made to B() or " "B() without the matching call of the pair since the " "jump buffer was filled by B(3) (B(3)). Likewise, " "calling B(3) (B(3)) from inside a clean-up handler " "produces undefined results unless the jump buffer was also filled by " "B(3) (B(3)) inside the handler." msgstr "" "Вызов B(3) (B(3)) приводит к непредсказуемым " "результатам, если был сделан любой вызов в B() или " "B() без соответствующего вызову пары, так как буфер " "перехода (jump buffer) был заполнен B(3) (B(3)). " "Подобным образом, вызов B(3) (B(3)) изнутри очищающего " "обработчика приводит к непредсказуемым результатам, если буфер перехода " "также не был заполнен B(3) (B(3)) внутри обработчика." #. 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 "These functions do not return a value." msgstr "Данные функции не возвращают никаких значений." #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "ERRORS" msgstr "ОШИБКИ" #. #-#-#-#-# archlinux: pthread_cleanup_push.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# debian-bookworm: pthread_cleanup_push.3.pot (PACKAGE VERSION) #-#-#-#-# #. SH VERSIONS #. Available since glibc 2.0 #. type: Plain text #. #-#-#-#-# debian-unstable: pthread_cleanup_push.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# fedora-40: pthread_cleanup_push.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# fedora-rawhide: pthread_cleanup_push.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# mageia-cauldron: pthread_cleanup_push.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# opensuse-leap-15-6: pthread_cleanup_push.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #. #-#-#-#-# opensuse-tumbleweed: pthread_cleanup_push.3.pot (PACKAGE VERSION) #-#-#-#-# #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "There are no errors." msgstr "Эти функции не вызывают ошибок." #. 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(7)." msgstr "Описание терминов данного раздела смотрите в B(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(),\n" "B()" msgstr "" "B(),\n" "B()" #. 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: SH #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "VERSIONS" msgstr "ВЕРСИИ" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-leap-15-6 opensuse-tumbleweed #, fuzzy #| msgid "" #| "On Linux, the B() and B() " #| "functions I implemented as macros that expand to text containing " #| "\\(aqB<{>\\(aq and \\(aqB<}>\\(aq, respectively. This means that " #| "variables declared within the scope of paired calls to these functions " #| "will be visible within only that scope." msgid "" "On glibc, the B() and B() " "functions I implemented as macros that expand to text containing " "\\[aq]B<{>\\[aq] and \\[aq]B<}>\\[aq], respectively. This means that " "variables declared within the scope of paired calls to these functions will " "be visible within only that scope." msgstr "" "В Linux, функции B() и B() " "реализованы в виде макросов, которые расширяются до текста, содержащего " "\\(aqB<{>\\(aq и \\(aqB<}>\\(aq, соответственно. Это означает, что " "переменные, объявленные внутри области парных вызовов этих функций, будут " "видимы внутри только этой области." #. The text was actually added in the 2004 TC2 #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "POSIX.1 says that the effect of using I, I, I, or " "I to prematurely leave a block bracketed B() " "and B() is undefined. Portable applications should " "avoid doing this." msgstr "" "В POSIX.1 сказано, что результат использования I, I, " "I или I для преждевременного оставления блока, окружающего " "B() и B(), не определён. В " "переносимых приложениях не нужно так делать." #. 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 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 #, fuzzy #| msgid "POSIX.1-2001." msgid "POSIX.1-2001. glibc 2.0." msgstr "POSIX.1-2001." #. type: SH #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "EXAMPLES" msgstr "ПРИМЕРЫ" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, fuzzy #| msgid "" #| "The program below provides a simple example of the use of the functions " #| "described in this page. The program creates a thread that executes a " #| "loop bracketed by B() and " #| "B(). This loop increments a global variable, " #| "I, once each second. Depending on what command-line arguments are " #| "supplied, the main thread sends the other thread a cancellation request, " #| "or sets a global variable that causes the other thread to exit its loop " #| "and terminate normally (by doing a I)." msgid "" "The program below provides a simple example of the use of the functions " "described in this page. The program creates a thread that executes a loop " "bracketed by B() and B(). This " "loop increments a global variable, I, once each second. Depending on " "what command-line arguments are supplied, the main thread sends the other " "thread a cancelation request, or sets a global variable that causes the " "other thread to exit its loop and terminate normally (by doing a I)." msgstr "" "Далее показан простой пример использования функций, описанных на этой " "странице. Программа создаёт нить, которая выполняет цикл обрамлённый " "B() и B(). В этом цикле каждую " "секунду увеличивается глобальная переменная I. В зависимости от " "аргументов командной строки главная нить посылает другой нити запрос на " "отмену или изменяет глобальную переменную, что заставляет другую нить выйти " "из цикла и завершить работу (с помощью I)." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, fuzzy #| msgid "" #| "In the following shell session, the main thread sends a cancellation " #| "request to the other thread:" msgid "" "In the following shell session, the main thread sends a cancelation request " "to the other thread:" 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<./a.out>\n" "New thread started\n" "cnt = 0\n" "cnt = 1\n" "Canceling thread\n" "Called clean-up handler\n" "Thread was canceled; cnt = 0\n" msgstr "" "$ B<./a.out>\n" "Запущена новая нить\n" "cnt = 0\n" "cnt = 1\n" "Отменяем нить\n" "Вызван очищающий обработчик\n" "Нить отменена; cnt = 0\n" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, fuzzy #| msgid "" #| "From the above, we see that the thread was canceled, and that the " #| "cancellation clean-up handler was called and it reset the value of the " #| "global variable I to 0." msgid "" "From the above, we see that the thread was canceled, and that the " "cancelation clean-up handler was called and it reset the value of the global " "variable I to 0." msgstr "" "Здесь мы видим, что нить была отменена и что был вызван очищающий обработчик " "и он сбросил значение глобальной переменной I в 0." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In the next run, the main program sets a global variable that causes other " "thread to terminate normally:" 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<./a.out x>\n" "New thread started\n" "cnt = 0\n" "cnt = 1\n" "Thread terminated normally; cnt = 2\n" msgstr "" "$ B<./a.out x>\n" "Запущена новая нить\n" "cnt = 0\n" "cnt = 1\n" "Нить завершилась штатным образом; cnt = 2\n" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "From the above, we see that the clean-up handler was not executed (because " "I was 0), and therefore the value of I was not reset." msgstr "" "Здесь мы видим, что очищающий обработчик не вызывался (так как " "I равно 0), и поэтому значение I не сброшено." #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In the next run, the main program sets a global variable that causes the " "other thread to terminate normally, and supplies a nonzero value for " "I:" msgstr "" "В следующем сеансе главная программа изменяет глобальную переменную, что " "вызывает штатное завершение другой нити, передаёт ненулевое значение в " "I:" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "" "$ B<./a.out x 1>\n" "New thread started\n" "cnt = 0\n" "cnt = 1\n" "Called clean-up handler\n" "Thread terminated normally; cnt = 0\n" msgstr "" "$ B<./a.out x 1>\n" "Запущена новая нить\n" "cnt = 0\n" "cnt = 1\n" "Вызван очищающий обработчик\n" "Нить завершилась штатным образом; cnt = 0\n" #. type: Plain text #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed msgid "" "In the above, we see that although the thread was not canceled, the clean-up " "handler was executed, because the argument given to " "B() was nonzero." msgstr "" "Здесь мы видим, что хотя нить не отменена, всё же вызван очищающий " "обработчик, так как в B() передан ненулевой аргумент." #. type: SS #: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide #: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed #, no-wrap msgid "Program source" msgstr "Исходный код программы" #. type: Plain text #: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron #: opensuse-tumbleweed #, no-wrap msgid "" "#include Eerrno.hE\n" "#include Epthread.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/types.hE\n" "#include Eunistd.hE\n" "\\&\n" "#define handle_error_en(en, msg) \\e\n" " do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)\n" "\\&\n" "static int done = 0;\n" "static int cleanup_pop_arg = 0;\n" "static int cnt = 0;\n" "\\&\n" "static void\n" "cleanup_handler(void *arg)\n" "{\n" " printf(\"Called clean-up handler\\en\");\n" " cnt = 0;\n" "}\n" "\\&\n" "static void *\n" "thread_start(void *arg)\n" "{\n" " time_t curr;\n" "\\&\n" " printf(\"New thread started\\en\");\n" "\\&\n" " pthread_cleanup_push(cleanup_handler, NULL);\n" "\\&\n" " curr = time(NULL);\n" "\\&\n" " while (!done) {\n" " pthread_testcancel(); /* A cancelation point */\n" " if (curr E time(NULL)) {\n" " curr = time(NULL);\n" " printf(\"cnt = %d\\en\", cnt); /* A cancelation point */\n" " cnt++;\n" " }\n" " }\n" "\\&\n" " pthread_cleanup_pop(cleanup_pop_arg);\n" " return NULL;\n" "}\n" "\\&\n" "int\n" "main(int argc, char *argv[])\n" "{\n" " pthread_t thr;\n" " int s;\n" " void *res;\n" "\\&\n" " s = pthread_create(&thr, NULL, thread_start, NULL);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_create\");\n" "\\&\n" " sleep(2); /* Allow new thread to run a while */\n" "\\&\n" " if (argc E 1) {\n" " if (argc E 2)\n" " cleanup_pop_arg = atoi(argv[2]);\n" " done = 1;\n" "\\&\n" " } else {\n" " printf(\"Canceling thread\\en\");\n" " s = pthread_cancel(thr);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_cancel\");\n" " }\n" "\\&\n" " s = pthread_join(thr, &res);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_join\");\n" "\\&\n" " if (res == PTHREAD_CANCELED)\n" " printf(\"Thread was canceled; cnt = %d\\en\", cnt);\n" " else\n" " printf(\"Thread terminated normally; cnt = %d\\en\", cnt);\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" #. SRC END #. 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(3), B(3), " "B(3), B(3), B(7)" msgstr "" "B(3), B(3), " "B(3), B(3), B(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 msgid "POSIX.1-2001, POSIX.1-2008." msgstr "POSIX.1-2001, POSIX.1-2008." #. type: SH #: debian-bookworm #, no-wrap msgid "NOTES" msgstr "ПРИМЕЧАНИЯ" #. type: Plain text #: debian-bookworm #, fuzzy #| msgid "" #| "On Linux, the B() and B() " #| "functions I implemented as macros that expand to text containing " #| "\\(aqB<{>\\(aq and \\(aqB<}>\\(aq, respectively. This means that " #| "variables declared within the scope of paired calls to these functions " #| "will be visible within only that scope." msgid "" "On Linux, the B() and B() " "functions I implemented as macros that expand to text containing " "\\[aq]B<{>\\[aq] and \\[aq]B<}>\\[aq], respectively. This means that " "variables declared within the scope of paired calls to these functions will " "be visible within only that scope." msgstr "" "В Linux, функции B() и B() " "реализованы в виде макросов, которые расширяются до текста, содержащего " "\\(aqB<{>\\(aq и \\(aqB<}>\\(aq, соответственно. Это означает, что " "переменные, объявленные внутри области парных вызовов этих функций, будут " "видимы внутри только этой области." #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, fuzzy, no-wrap #| msgid "" #| "#include Epthread.hE\n" #| "#include Esys/types.hE\n" #| "#include Estdio.hE\n" #| "#include Estdlib.hE\n" #| "#include Eunistd.hE\n" #| "#include Eerrno.hE\n" msgid "" "#include Eerrno.hE\n" "#include Epthread.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Esys/types.hE\n" "#include Eunistd.hE\n" msgstr "" "#include Epthread.hE\n" "#include Esys/types.hE\n" "#include Estdio.hE\n" "#include Estdlib.hE\n" "#include Eunistd.hE\n" "#include Eerrno.hE\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "#define handle_error_en(en, msg) \\e\n" " do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)\n" msgstr "" "#define handle_error_en(en, msg) \\e\n" " do { errno = en; perror(msg); exit(EXIT_FAILURE); } while (0)\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "static int done = 0;\n" "static int cleanup_pop_arg = 0;\n" "static int cnt = 0;\n" msgstr "" "static int done = 0;\n" "static int cleanup_pop_arg = 0;\n" "static int cnt = 0;\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "static void\n" "cleanup_handler(void *arg)\n" "{\n" " printf(\"Called clean-up handler\\en\");\n" " cnt = 0;\n" "}\n" msgstr "" "static void\n" "cleanup_handler(void *arg)\n" "{\n" " printf(\"Вызван очищающий обработчик\\en\");\n" " cnt = 0;\n" "}\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, fuzzy, no-wrap #| msgid "" #| "static void *\n" #| "thread_start(void *arg)\n" #| "{\n" #| " time_t start, curr;\n" msgid "" "static void *\n" "thread_start(void *arg)\n" "{\n" " time_t curr;\n" msgstr "" "static void *\n" "thread_start(void *arg)\n" "{\n" " time_t start, curr;\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " printf(\"New thread started\\en\");\n" msgstr " printf(\"Запущена новая нить\\en\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " pthread_cleanup_push(cleanup_handler, NULL);\n" msgstr " pthread_cleanup_push(cleanup_handler, NULL);\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, fuzzy, no-wrap #| msgid " curr = start = time(NULL);\n" msgid " curr = time(NULL);\n" msgstr " curr = start = time(NULL);\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, fuzzy, no-wrap #| msgid "" #| " while (!done) {\n" #| " pthread_testcancel(); /* A cancellation point */\n" #| " if (curr E time(NULL)) {\n" #| " curr = time(NULL);\n" #| " printf(\"cnt = %d\\en\", cnt); /* A cancellation point */\n" #| " cnt++;\n" #| " }\n" #| " }\n" msgid "" " while (!done) {\n" " pthread_testcancel(); /* A cancelation point */\n" " if (curr E time(NULL)) {\n" " curr = time(NULL);\n" " printf(\"cnt = %d\\en\", cnt); /* A cancelation point */\n" " cnt++;\n" " }\n" " }\n" msgstr "" " while (!done) {\n" " pthread_testcancel(); /* точка отмены */\n" " if (curr E time(NULL)) {\n" " curr = time(NULL);\n" " printf(\"cnt = %d\\en\", cnt); /* точка отмены */\n" " cnt++;\n" " }\n" " }\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " pthread_cleanup_pop(cleanup_pop_arg);\n" " return NULL;\n" "}\n" msgstr "" " pthread_cleanup_pop(cleanup_pop_arg);\n" " return NULL;\n" "}\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" "int\n" "main(int argc, char *argv[])\n" "{\n" " pthread_t thr;\n" " int s;\n" " void *res;\n" msgstr "" "int\n" "main(int argc, char *argv[])\n" "{\n" " pthread_t thr;\n" " int s;\n" " void *res;\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " s = pthread_create(&thr, NULL, thread_start, NULL);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_create\");\n" msgstr "" " s = pthread_create(&thr, NULL, thread_start, NULL);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_create\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid " sleep(2); /* Allow new thread to run a while */\n" msgstr " sleep(2); /* даём время нити запуститься */\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (argc E 1) {\n" " if (argc E 2)\n" " cleanup_pop_arg = atoi(argv[2]);\n" " done = 1;\n" msgstr "" " if (argc E 1) {\n" " if (argc E 2)\n" " cleanup_pop_arg = atoi(argv[2]);\n" " done = 1;\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " } else {\n" " printf(\"Canceling thread\\en\");\n" " s = pthread_cancel(thr);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_cancel\");\n" " }\n" msgstr "" " } else {\n" " printf(\"Отменяем нить\\en\");\n" " s = pthread_cancel(thr);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_cancel\");\n" " }\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " s = pthread_join(thr, &res);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_join\");\n" msgstr "" " s = pthread_join(thr, &res);\n" " if (s != 0)\n" " handle_error_en(s, \"pthread_join\");\n" #. type: Plain text #: debian-bookworm opensuse-leap-15-6 #, no-wrap msgid "" " if (res == PTHREAD_CANCELED)\n" " printf(\"Thread was canceled; cnt = %d\\en\", cnt);\n" " else\n" " printf(\"Thread terminated normally; cnt = %d\\en\", cnt);\n" " exit(EXIT_SUCCESS);\n" "}\n" msgstr "" " if (res == PTHREAD_CANCELED)\n" " printf(\"Нить была отменена; cnt = %d\\en\", cnt);\n" " else\n" " printf(\"Нить завершилась штатным образом; cnt = %d\\en\", cnt);\n" " exit(EXIT_SUCCESS);\n" "}\n" #. 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"