summaryrefslogtreecommitdiffstats
path: root/po/ru/man7/aio.7.po
diff options
context:
space:
mode:
Diffstat (limited to 'po/ru/man7/aio.7.po')
-rw-r--r--po/ru/man7/aio.7.po1622
1 files changed, 1622 insertions, 0 deletions
diff --git a/po/ru/man7/aio.7.po b/po/ru/man7/aio.7.po
new file mode 100644
index 00000000..48204532
--- /dev/null
+++ b/po/ru/man7/aio.7.po
@@ -0,0 +1,1622 @@
+# Russian translation of manpages
+# This file is distributed under the same license as the manpages-l10n package.
+# Copyright © of this file:
+# Dmitry Bolkhovskikh <d20052005@yandex.ru>, 2017.
+# Yuri Kozlov <yuray@komyakino.ru>, 2012-2019.
+msgid ""
+msgstr ""
+"Project-Id-Version: manpages-l10n\n"
+"POT-Creation-Date: 2024-03-01 16:52+0100\n"
+"PO-Revision-Date: 2019-08-11 08:40+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 "AIO"
+msgstr "AIO"
+
+#. 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 "aio - POSIX asynchronous I/O overview"
+msgstr "aio - введение в асинхронный ввод-вывод POSIX"
+
+#. 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 POSIX asynchronous I/O (AIO) interface allows applications to initiate "
+"one or more I/O operations that are performed asynchronously (i.e., in the "
+"background). The application can elect to be notified of completion of the "
+"I/O operation in a variety of ways: by delivery of a signal, by "
+"instantiation of a thread, or no notification at all."
+msgstr ""
+"Интерфейс асинхронного ввода-вывода POSIX (AIO) позволяет приложениям "
+"запускать одну или несколько операций ввода-вывода, которые выполняются "
+"асинхронно (т. е., в фоновом режиме). Приложение может выбрать каким образом "
+"оно будет уведомлено о завершении операции ввода-вывода: с помощью сигнала, "
+"созданием новой нити или вообще не получать уведомления."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "The POSIX AIO interface consists of the following functions:"
+msgstr "Интерфейс POSIX AIO состоит из следующих функций:"
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<aio_read>(3)"
+msgstr "B<aio_read>(3)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "Enqueue a read request. This is the asynchronous analog of B<read>(2)."
+msgstr "Ставит запрос на чтение в очередь. Это асинхронный аналог B<read>(2)."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<aio_write>(3)"
+msgstr "B<aio_write>(3)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Enqueue a write request. This is the asynchronous analog of B<write>(2)."
+msgstr "Ставит запрос на запись в очередь. Это асинхронный аналог B<write>(2)."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<aio_fsync>(3)"
+msgstr "B<aio_fsync>(3)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Enqueue a sync request for the I/O operations on a file descriptor. This is "
+"the asynchronous analog of B<fsync>(2) and B<fdatasync>(2)."
+msgstr ""
+"Ставит запрос синхронизации операций ввода-вывода над файловым дескриптором. "
+"Это асинхронный аналог B<fsync>(2) и B<fdatasync>(2)."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<aio_error>(3)"
+msgstr "B<aio_error>(3)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "Obtain the error status of an enqueued I/O request."
+msgstr ""
+"Возвращает информацию о состоянии поставленного в очередь запроса ввода-"
+"вывода."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<aio_return>(3)"
+msgstr "B<aio_return>(3)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "Obtain the return status of a completed I/O request."
+msgstr "Возвращает информацию о выполненном запросе ввода-вывода."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<aio_suspend>(3)"
+msgstr "B<aio_suspend>(3)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Suspend the caller until one or more of a specified set of I/O requests "
+"completes."
+msgstr ""
+"Приостанавливает вызывающего до тех пор, пока не выполнится один или более "
+"указанных запросов ввода-вывода."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<aio_cancel>(3)"
+msgstr "B<aio_cancel>(3)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Attempt to cancel outstanding I/O requests on a specified file descriptor."
+msgstr ""
+"Пытается отменить ожидающие выполнения запросы ввода-вывода над заданным "
+"файловым дескриптором."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<lio_listio>(3)"
+msgstr "B<lio_listio>(3)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "Enqueue multiple I/O requests using a single function call."
+msgstr ""
+"Ставит в очередь сразу несколько запросов ввода-вывода за один вызов функции."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The I<aiocb> (\"asynchronous I/O control block\") structure defines "
+"parameters that control an I/O operation. An argument of this type is "
+"employed with all of the functions listed above. This structure has the "
+"following form:"
+msgstr ""
+"В структуре I<aiocb> («блок управления асинхронным вводом-выводом») задаются "
+"параметры, которые управляют операцией ввода-вывода. Аргумент данного типа "
+"передаётся во все функции, перечисленные ранее. Данная структура имеет "
+"следующий вид:"
+
+#. type: Plain text
+#: archlinux debian-unstable fedora-40 fedora-rawhide mageia-cauldron
+#: opensuse-tumbleweed
+#, fuzzy, no-wrap
+#| msgid ""
+#| " int aio_fildes; /* File descriptor */\n"
+#| " off_t aio_offset; /* File offset */\n"
+#| " volatile void *aio_buf; /* Location of buffer */\n"
+#| " size_t aio_nbytes; /* Length of transfer */\n"
+#| " int aio_reqprio; /* Request priority */\n"
+#| " struct sigevent aio_sigevent; /* Notification method */\n"
+#| " int aio_lio_opcode; /* Operation to be performed;\n"
+#| " lio_listio() only */\n"
+msgid ""
+"#include E<lt>aiocb.hE<gt>\n"
+"\\&\n"
+"struct aiocb {\n"
+" /* The order of these fields is implementation-dependent */\n"
+"\\&\n"
+" int aio_fildes; /* File descriptor */\n"
+" off_t aio_offset; /* File offset */\n"
+" volatile void *aio_buf; /* Location of buffer */\n"
+" size_t aio_nbytes; /* Length of transfer */\n"
+" int aio_reqprio; /* Request priority */\n"
+" struct sigevent aio_sigevent; /* Notification method */\n"
+" int aio_lio_opcode; /* Operation to be performed;\n"
+" lio_listio() only */\n"
+"\\&\n"
+" /* Various implementation-internal fields not shown */\n"
+"};\n"
+"\\&\n"
+"/* Operation codes for \\[aq]aio_lio_opcode\\[aq]: */\n"
+"\\&\n"
+"enum { LIO_READ, LIO_WRITE, LIO_NOP };\n"
+msgstr ""
+" int aio_fildes; /* файловый дескриптор */\n"
+" off_t aio_offset; /* файловое смещение */\n"
+" volatile void *aio_buf; /* расположение буфера */\n"
+" size_t aio_nbytes; /* длина передачи */\n"
+" int aio_reqprio; /* приоритет запроса */\n"
+" struct sigevent aio_sigevent; /* метод уведомления */\n"
+" int aio_lio_opcode; /* выполняемая операция;\n"
+" только в lio_listio() */\n"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "The fields of this structure are as follows:"
+msgstr "Поля этой структуры имеют следующее назначение:"
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "I<aio_fildes>"
+msgstr "I<aio_fildes>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "The file descriptor on which the I/O operation is to be performed."
+msgstr ""
+"Файловый дескриптор, над которым будут выполняться операции ввода-вывода."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "I<aio_offset>"
+msgstr "I<aio_offset>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "This is the file offset at which the I/O operation is to be performed."
+msgstr ""
+"Файловое смещение, начиная с которого будут выполняться операции ввода-"
+"вывода."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "I<aio_buf>"
+msgstr "I<aio_buf>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "This is the buffer used to transfer data for a read or write operation."
+msgstr ""
+"Буфер, используемый для пересылки данных при операции чтения или записи."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "I<aio_nbytes>"
+msgstr "I<aio_nbytes>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "This is the size of the buffer pointed to by I<aio_buf>."
+msgstr "Размер буфера, на который указывает I<aio_buf>."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "I<aio_reqprio>"
+msgstr "I<aio_reqprio>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"This field specifies a value that is subtracted from the calling thread's "
+"real-time priority in order to determine the priority for execution of this "
+"I/O request (see B<pthread_setschedparam>(3)). The specified value must be "
+"between 0 and the value returned by I<sysconf(_SC_AIO_PRIO_DELTA_MAX)>. "
+"This field is ignored for file synchronization operations."
+msgstr ""
+"В этом поле задаётся значение, которое вычитается из приоритета реального "
+"времени вызывающей нити, чтобы определить приоритет выполнения данного "
+"запроса ввода-вывода (смотрите B<pthread_setschedparam>(3)). Указываемое "
+"значение должно быть в диапазоне от 0 и до значения, возвращаемого "
+"I<sysconf(_SC_AIO_PRIO_DELTA_MAX)>. Данное поле игнорируется при операциях "
+"синхронизации файла."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "I<aio_sigevent>"
+msgstr "I<aio_sigevent>"
+
+#. type: Plain text
+#: archlinux fedora-40 fedora-rawhide mageia-cauldron
+#, fuzzy
+#| msgid ""
+#| "This field is a structure that specifies how the caller is to be notified "
+#| "when the asynchronous I/O operation completes. Possible values for "
+#| "I<aio_sigevent.sigev_notify> are B<SIGEV_NONE>, B<SIGEV_SIGNAL>, and "
+#| "B<SIGEV_THREAD>. See B<sigevent>(7) for further details."
+msgid ""
+"This field is a structure that specifies how the caller is to be notified "
+"when the asynchronous I/O operation completes. Possible values for "
+"I<aio_sigevent.sigev_notify> are B<SIGEV_NONE>, B<SIGEV_SIGNAL>, and "
+"B<SIGEV_THREAD>. See B<sigevent>(3type) for further details."
+msgstr ""
+"В этом поле задаётся структура, которая указывает как вызывающему должно "
+"быть сообщено о завершении анонимной операции ввода-вывода. Возможные "
+"значения для I<aio_sigevent.sigev_notify>: B<SIGEV_NONE>, B<SIGEV_SIGNAL> и "
+"B<SIGEV_THREAD>. Подробности смотрите в B<sigevent>(7)."
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "I<aio_lio_opcode>"
+msgstr "I<aio_lio_opcode>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid "The type of operation to be performed; used only for B<lio_listio>(3)."
+msgstr ""
+"Задаёт тип операции, которая будет выполнена; используется только в "
+"B<lio_listio>(3)."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"In addition to the standard functions listed above, the GNU C library "
+"provides the following extension to the POSIX AIO API:"
+msgstr ""
+"В дополнении к стандартным функциям, перечисленным ранее, в библиотеке GNU C "
+"есть следующее расширение программного интерфейса POSIX AIO:"
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<aio_init>(3)"
+msgstr "B<aio_init>(3)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Set parameters for tuning the behavior of the glibc POSIX AIO implementation."
+msgstr "Позволяет изменить настройки поведения реализации glibc для POSIX AIO."
+
+#. type: SH
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "ERRORS"
+msgstr "ОШИБКИ"
+
+#. type: TP
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, no-wrap
+msgid "B<EINVAL>"
+msgstr "B<EINVAL>"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The I<aio_reqprio> field of the I<aiocb> structure was less than 0, or was "
+"greater than the limit returned by the call "
+"I<sysconf(_SC_AIO_PRIO_DELTA_MAX)>."
+msgstr ""
+"Значение поля I<aio_reqprio> структуры I<aiocb> меньше 0 или больше, чем "
+"значение ограничения, возвращаемое вызовом "
+"I<sysconf(_SC_AIO_PRIO_DELTA_MAX)>."
+
+#. 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.1."
+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 "NOTES"
+msgstr "ЗАМЕЧАНИЯ"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"It is a good idea to zero out the control block buffer before use (see "
+"B<memset>(3)). The control block buffer and the buffer pointed to by "
+"I<aio_buf> must not be changed while the I/O operation is in progress. "
+"These buffers must remain valid until the I/O operation completes."
+msgstr ""
+"Желательно обнулять буфер блока управления перед использованием (смотрите "
+"B<memset>(3)). Буфер блока управления и буфер, который задаётся в "
+"I<aio_buf>, не должны изменяться во время выполнения операции ввода-вывода. "
+"Данные буферы должны оставаться рабочими до завершения операции ввода-вывода."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Simultaneous asynchronous read or write operations using the same I<aiocb> "
+"structure yield undefined results."
+msgstr ""
+"Одновременное выполнение операций чтения или записи через совместно "
+"используемую структуру I<aiocb> приводит к непредсказуемым результатам."
+
+#. http://lse.sourceforge.net/io/aio.html
+#. http://lse.sourceforge.net/io/aionotes.txt
+#. http://lwn.net/Articles/148755/
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"The current Linux POSIX AIO implementation is provided in user space by "
+"glibc. This has a number of limitations, most notably that maintaining "
+"multiple threads to perform I/O operations is expensive and scales poorly. "
+"Work has been in progress for some time on a kernel state-machine-based "
+"implementation of asynchronous I/O (see B<io_submit>(2), B<io_setup>(2), "
+"B<io_cancel>(2), B<io_destroy>(2), B<io_getevents>(2)), but this "
+"implementation hasn't yet matured to the point where the POSIX AIO "
+"implementation can be completely reimplemented using the kernel system calls."
+msgstr ""
+"Имеющаяся реализация Linux POSIX AIO предоставляется glibc в "
+"пользовательском пространстве. Она имеет ряд ограничений, наиболее "
+"существенные из которых — затраты на сопровождение нескольких нитей при "
+"операциях ввода-вывода и плохое масштабирование. Некогда для реализации "
+"асинхронного ввода-вывода велась работа над ядерной реализацией на основе "
+"машины состояний (смотрите B<io_submit>(2), B<io_setup>(2), "
+"B<io_cancel>(2), B<io_destroy>(2), B<io_getevents>(2)), но эта реализация "
+"ещё недостаточно стабильна в тех местах, где POSIX AIO можно было бы "
+"полностью реализовать на системных вызовах ядра."
+
+#. 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
+msgid ""
+"The program below opens each of the files named in its command-line "
+"arguments and queues a request on the resulting file descriptor using "
+"B<aio_read>(3). The program then loops, periodically monitoring each of the "
+"I/O operations that is still in progress using B<aio_error>(3). Each of the "
+"I/O requests is set up to provide notification by delivery of a signal. "
+"After all I/O requests have completed, the program retrieves their status "
+"using B<aio_return>(3)."
+msgstr ""
+"Представленная далее программа открывает все файлы, указанные в параметрах "
+"командной строки и ставит в очередь запрос на полученные файловые "
+"дескрипторы с помощью B<aio_read>(3). Затем программа входит в цикл, в "
+"котором периодически следит за всеми выполняемыми операциями ввода-вывода с "
+"помощью B<aio_error>(3). Для каждого запроса ввода-вывода настроено "
+"получение уведомления посредством сигнала. После завершения всех запросов "
+"ввода-вывода, программа возвращает их состояние с помощью B<aio_return>(3)."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+#, fuzzy
+#| msgid ""
+#| "The B<SIGQUIT> signal (generated by typing control-\\e) causes the "
+#| "program to request cancellation of each of the outstanding requests using "
+#| "B<aio_cancel>(3)."
+msgid ""
+"The B<SIGQUIT> signal (generated by typing control-\\e) causes the program "
+"to request cancelation of each of the outstanding requests using "
+"B<aio_cancel>(3)."
+msgstr ""
+"Сигнал B<SIGQUIT> (генерируемый нажатием control-\\e) заставляет программу "
+"отменить все невыполненные запросы с помощью B<aio_cancel>(3)."
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"Here is an example of what we might see when running this program. In this "
+"example, the program queues two requests to standard input, and these are "
+"satisfied by two lines of input containing \"abc\" and \"x\"."
+msgstr ""
+"Вот результат работы программы. В этом примере программа ставит в очередь "
+"два запроса для стандартного ввода, и они отрабатываются двумя введёнными "
+"строками «abc» и «x»."
+
+#. 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 /dev/stdin /dev/stdin>\n"
+"opened /dev/stdin on descriptor 3\n"
+"opened /dev/stdin on descriptor 4\n"
+"aio_error():\n"
+" for request 0 (descriptor 3): In progress\n"
+" for request 1 (descriptor 4): In progress\n"
+"B<abc>\n"
+"I/O completion signal received\n"
+"aio_error():\n"
+" for request 0 (descriptor 3): I/O succeeded\n"
+" for request 1 (descriptor 4): In progress\n"
+"aio_error():\n"
+" for request 1 (descriptor 4): In progress\n"
+"B<x>\n"
+"I/O completion signal received\n"
+"aio_error():\n"
+" for request 1 (descriptor 4): I/O succeeded\n"
+"All I/O requests completed\n"
+"aio_return():\n"
+" for request 0 (descriptor 3): 4\n"
+" for request 1 (descriptor 4): 2\n"
+msgstr ""
+"$ B<./a.out /dev/stdin /dev/stdin>\n"
+"открыт /dev/stdin в дескрипторе 3\n"
+"открыт /dev/stdin в дескрипторе 4\n"
+"aio_error():\n"
+" запрос 0 (дескриптор 3): выполняется\n"
+" запрос 1 (дескриптор 4): выполняется\n"
+"B<abc>\n"
+"Получен сигнал завершения ввода-вывода\n"
+"aio_error():\n"
+" запрос 0 (дескриптор 3): ввод-вывод завершён\n"
+" запрос 1 (дескриптор 4): выполняется\n"
+"aio_error():\n"
+" запрос 1 (дескриптор 4): выполняется\n"
+"B<x>\n"
+"Получен сигнал завершения ввода-вывода\n"
+"aio_error():\n"
+" запрос 1 (дескриптор 4): ввод-вывод завершён\n"
+"Завершены все запросы ввода-вывода\n"
+"aio_return():\n"
+" запрос 0 (дескриптор 3): 4\n"
+" запрос 1 (дескриптор 4): 2\n"
+
+#. 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 E<lt>fcntl.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>errno.hE<gt>\n"
+"#include E<lt>aio.hE<gt>\n"
+"#include E<lt>signal.hE<gt>\n"
+"\\&\n"
+"#define BUF_SIZE 20 /* Size of buffers for read operations */\n"
+"\\&\n"
+"#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0)\n"
+"\\&\n"
+"struct ioRequest { /* Application-defined structure for tracking\n"
+" I/O requests */\n"
+" int reqNum;\n"
+" int status;\n"
+" struct aiocb *aiocbp;\n"
+"};\n"
+"\\&\n"
+"static volatile sig_atomic_t gotSIGQUIT = 0;\n"
+" /* On delivery of SIGQUIT, we attempt to\n"
+" cancel all outstanding I/O requests */\n"
+"\\&\n"
+"static void /* Handler for SIGQUIT */\n"
+"quitHandler(int sig)\n"
+"{\n"
+" gotSIGQUIT = 1;\n"
+"}\n"
+"\\&\n"
+"#define IO_SIGNAL SIGUSR1 /* Signal used to notify I/O completion */\n"
+"\\&\n"
+"static void /* Handler for I/O completion signal */\n"
+"aioSigHandler(int sig, siginfo_t *si, void *ucontext)\n"
+"{\n"
+" if (si-E<gt>si_code == SI_ASYNCIO) {\n"
+" write(STDOUT_FILENO, \"I/O completion signal received\\en\", 31);\n"
+"\\&\n"
+" /* The corresponding ioRequest structure would be available as\n"
+" struct ioRequest *ioReq = si-E<gt>si_value.sival_ptr;\n"
+" and the file descriptor would then be available via\n"
+" ioReq-E<gt>aiocbp-E<gt>aio_fildes */\n"
+" }\n"
+"}\n"
+"\\&\n"
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" struct sigaction sa;\n"
+" int s;\n"
+" int numReqs; /* Total number of queued I/O requests */\n"
+" int openReqs; /* Number of I/O requests still in progress */\n"
+"\\&\n"
+" if (argc E<lt> 2) {\n"
+" fprintf(stderr, \"Usage: %s E<lt>pathnameE<gt> E<lt>pathnameE<gt>...\\en\",\n"
+" argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+"\\&\n"
+" numReqs = argc - 1;\n"
+"\\&\n"
+" /* Allocate our arrays. */\n"
+"\\&\n"
+" struct ioRequest *ioList = calloc(numReqs, sizeof(*ioList));\n"
+" if (ioList == NULL)\n"
+" errExit(\"calloc\");\n"
+"\\&\n"
+" struct aiocb *aiocbList = calloc(numReqs, sizeof(*aiocbList));\n"
+" if (aiocbList == NULL)\n"
+" errExit(\"calloc\");\n"
+"\\&\n"
+" /* Establish handlers for SIGQUIT and the I/O completion signal. */\n"
+"\\&\n"
+" sa.sa_flags = SA_RESTART;\n"
+" sigemptyset(&sa.sa_mask);\n"
+"\\&\n"
+" sa.sa_handler = quitHandler;\n"
+" if (sigaction(SIGQUIT, &sa, NULL) == -1)\n"
+" errExit(\"sigaction\");\n"
+"\\&\n"
+" sa.sa_flags = SA_RESTART | SA_SIGINFO;\n"
+" sa.sa_sigaction = aioSigHandler;\n"
+" if (sigaction(IO_SIGNAL, &sa, NULL) == -1)\n"
+" errExit(\"sigaction\");\n"
+"\\&\n"
+" /* Open each file specified on the command line, and queue\n"
+" a read request on the resulting file descriptor. */\n"
+"\\&\n"
+" for (size_t j = 0; j E<lt> numReqs; j++) {\n"
+" ioList[j].reqNum = j;\n"
+" ioList[j].status = EINPROGRESS;\n"
+" ioList[j].aiocbp = &aiocbList[j];\n"
+"\\&\n"
+" ioList[j].aiocbp-E<gt>aio_fildes = open(argv[j + 1], O_RDONLY);\n"
+" if (ioList[j].aiocbp-E<gt>aio_fildes == -1)\n"
+" errExit(\"open\");\n"
+" printf(\"opened %s on descriptor %d\\en\", argv[j + 1],\n"
+" ioList[j].aiocbp-E<gt>aio_fildes);\n"
+"\\&\n"
+" ioList[j].aiocbp-E<gt>aio_buf = malloc(BUF_SIZE);\n"
+" if (ioList[j].aiocbp-E<gt>aio_buf == NULL)\n"
+" errExit(\"malloc\");\n"
+"\\&\n"
+" ioList[j].aiocbp-E<gt>aio_nbytes = BUF_SIZE;\n"
+" ioList[j].aiocbp-E<gt>aio_reqprio = 0;\n"
+" ioList[j].aiocbp-E<gt>aio_offset = 0;\n"
+" ioList[j].aiocbp-E<gt>aio_sigevent.sigev_notify = SIGEV_SIGNAL;\n"
+" ioList[j].aiocbp-E<gt>aio_sigevent.sigev_signo = IO_SIGNAL;\n"
+" ioList[j].aiocbp-E<gt>aio_sigevent.sigev_value.sival_ptr =\n"
+" &ioList[j];\n"
+"\\&\n"
+" s = aio_read(ioList[j].aiocbp);\n"
+" if (s == -1)\n"
+" errExit(\"aio_read\");\n"
+" }\n"
+"\\&\n"
+" openReqs = numReqs;\n"
+"\\&\n"
+" /* Loop, monitoring status of I/O requests. */\n"
+"\\&\n"
+" while (openReqs E<gt> 0) {\n"
+" sleep(3); /* Delay between each monitoring step */\n"
+"\\&\n"
+" if (gotSIGQUIT) {\n"
+"\\&\n"
+" /* On receipt of SIGQUIT, attempt to cancel each of the\n"
+" outstanding I/O requests, and display status returned\n"
+" from the cancelation requests. */\n"
+"\\&\n"
+" printf(\"got SIGQUIT; canceling I/O requests: \\en\");\n"
+"\\&\n"
+" for (size_t j = 0; j E<lt> numReqs; j++) {\n"
+" if (ioList[j].status == EINPROGRESS) {\n"
+" printf(\" Request %zu on descriptor %d:\", j,\n"
+" ioList[j].aiocbp-E<gt>aio_fildes);\n"
+" s = aio_cancel(ioList[j].aiocbp-E<gt>aio_fildes,\n"
+" ioList[j].aiocbp);\n"
+" if (s == AIO_CANCELED)\n"
+" printf(\"I/O canceled\\en\");\n"
+" else if (s == AIO_NOTCANCELED)\n"
+" printf(\"I/O not canceled\\en\");\n"
+" else if (s == AIO_ALLDONE)\n"
+" printf(\"I/O all done\\en\");\n"
+" else\n"
+" perror(\"aio_cancel\");\n"
+" }\n"
+" }\n"
+"\\&\n"
+" gotSIGQUIT = 0;\n"
+" }\n"
+"\\&\n"
+" /* Check the status of each I/O request that is still\n"
+" in progress. */\n"
+"\\&\n"
+" printf(\"aio_error():\\en\");\n"
+" for (size_t j = 0; j E<lt> numReqs; j++) {\n"
+" if (ioList[j].status == EINPROGRESS) {\n"
+" printf(\" for request %zu (descriptor %d): \",\n"
+" j, ioList[j].aiocbp-E<gt>aio_fildes);\n"
+" ioList[j].status = aio_error(ioList[j].aiocbp);\n"
+"\\&\n"
+" switch (ioList[j].status) {\n"
+" case 0:\n"
+" printf(\"I/O succeeded\\en\");\n"
+" break;\n"
+" case EINPROGRESS:\n"
+" printf(\"In progress\\en\");\n"
+" break;\n"
+" case ECANCELED:\n"
+" printf(\"Canceled\\en\");\n"
+" break;\n"
+" default:\n"
+" perror(\"aio_error\");\n"
+" break;\n"
+" }\n"
+"\\&\n"
+" if (ioList[j].status != EINPROGRESS)\n"
+" openReqs--;\n"
+" }\n"
+" }\n"
+" }\n"
+"\\&\n"
+" printf(\"All I/O requests completed\\en\");\n"
+"\\&\n"
+" /* Check status return of all I/O requests. */\n"
+"\\&\n"
+" printf(\"aio_return():\\en\");\n"
+" for (size_t j = 0; j E<lt> numReqs; j++) {\n"
+" ssize_t s;\n"
+"\\&\n"
+" s = aio_return(ioList[j].aiocbp);\n"
+" printf(\" for request %zu (descriptor %d): %zd\\en\",\n"
+" j, ioList[j].aiocbp-E<gt>aio_fildes, s);\n"
+" }\n"
+"\\&\n"
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+msgstr ""
+
+#. 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<io_cancel>(2), B<io_destroy>(2), B<io_getevents>(2), B<io_setup>(2), "
+"B<io_submit>(2), B<aio_cancel>(3), B<aio_error>(3), B<aio_init>(3), "
+"B<aio_read>(3), B<aio_return>(3), B<aio_write>(3), B<lio_listio>(3)"
+msgstr ""
+"B<io_cancel>(2), B<io_destroy>(2), B<io_getevents>(2), B<io_setup>(2), "
+"B<io_submit>(2), B<aio_cancel>(3), B<aio_error>(3), B<aio_init>(3), "
+"B<aio_read>(3), B<aio_return>(3), B<aio_write>(3), B<lio_listio>(3)"
+
+#. type: Plain text
+#: archlinux debian-bookworm debian-unstable fedora-40 fedora-rawhide
+#: mageia-cauldron opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"\"Asynchronous I/O Support in Linux 2.5\", Bhattacharya, Pratt, Pulavarty, "
+"and Morgan, Proceedings of the Linux Symposium, 2003, E<.UR https://www."
+"kernel.org/doc/ols/2003/ols2003-pages-351-366.pdf> E<.UE>"
+msgstr ""
+"«Asynchronous I/O Support in Linux 2.5», Bhattacharya, Pratt, Pulavarty, and "
+"Morgan, Proceedings of the Linux Symposium, 2003, E<.UR https://www.kernel."
+"org/doc/ols/2003/ols2003-pages-351-366.pdf> E<.UE>"
+
+#. 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 opensuse-leap-15-6
+#, no-wrap
+msgid "#include E<lt>aiocb.hE<gt>\n"
+msgstr "#include E<lt>aiocb.hE<gt>\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"struct aiocb {\n"
+" /* The order of these fields is implementation-dependent */\n"
+msgstr ""
+"struct aiocb {\n"
+" /* Порядок данных полей определяется реализацией */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" int aio_fildes; /* File descriptor */\n"
+" off_t aio_offset; /* File offset */\n"
+" volatile void *aio_buf; /* Location of buffer */\n"
+" size_t aio_nbytes; /* Length of transfer */\n"
+" int aio_reqprio; /* Request priority */\n"
+" struct sigevent aio_sigevent; /* Notification method */\n"
+" int aio_lio_opcode; /* Operation to be performed;\n"
+" lio_listio() only */\n"
+msgstr ""
+" int aio_fildes; /* файловый дескриптор */\n"
+" off_t aio_offset; /* файловое смещение */\n"
+" volatile void *aio_buf; /* расположение буфера */\n"
+" size_t aio_nbytes; /* длина передачи */\n"
+" int aio_reqprio; /* приоритет запроса */\n"
+" struct sigevent aio_sigevent; /* метод уведомления */\n"
+" int aio_lio_opcode; /* выполняемая операция;\n"
+" только в lio_listio() */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" /* Various implementation-internal fields not shown */\n"
+"};\n"
+msgstr ""
+" /* Не показаны различные поля, используемые в реализациях */\n"
+"};\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid "/* Operation codes for \\(aqaio_lio_opcode\\(aq: */\n"
+msgid "/* Operation codes for \\[aq]aio_lio_opcode\\[aq]: */\n"
+msgstr "/* Коды операций для \\(aqaio_lio_opcode\\(aq: */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid "enum { LIO_READ, LIO_WRITE, LIO_NOP };\n"
+msgstr "enum { LIO_READ, LIO_WRITE, LIO_NOP };\n"
+
+#. type: Plain text
+#: debian-bookworm debian-unstable opensuse-leap-15-6 opensuse-tumbleweed
+msgid ""
+"This field is a structure that specifies how the caller is to be notified "
+"when the asynchronous I/O operation completes. Possible values for "
+"I<aio_sigevent.sigev_notify> are B<SIGEV_NONE>, B<SIGEV_SIGNAL>, and "
+"B<SIGEV_THREAD>. See B<sigevent>(7) for further details."
+msgstr ""
+"В этом поле задаётся структура, которая указывает как вызывающему должно "
+"быть сообщено о завершении анонимной операции ввода-вывода. Возможные "
+"значения для I<aio_sigevent.sigev_notify>: B<SIGEV_NONE>, B<SIGEV_SIGNAL> и "
+"B<SIGEV_THREAD>. Подробности смотрите в B<sigevent>(7)."
+
+#. type: SH
+#: debian-bookworm
+#, no-wrap
+msgid "VERSIONS"
+msgstr "ВЕРСИИ"
+
+#. type: Plain text
+#: debian-bookworm
+#, fuzzy
+#| msgid "The POSIX AIO interfaces are provided by glibc since version 2.1."
+msgid "The POSIX AIO interfaces are provided by glibc since glibc 2.1."
+msgstr "Интерфейсы POSIX AIO появились в glibc в версии 2.1."
+
+#. type: Plain text
+#: debian-bookworm
+msgid "POSIX.1-2001, POSIX.1-2008."
+msgstr "POSIX.1-2001, POSIX.1-2008."
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"#include E<lt>fcntl.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>errno.hE<gt>\n"
+"#include E<lt>aio.hE<gt>\n"
+"#include E<lt>signal.hE<gt>\n"
+msgstr ""
+"#include E<lt>fcntl.hE<gt>\n"
+"#include E<lt>stdlib.hE<gt>\n"
+"#include E<lt>unistd.hE<gt>\n"
+"#include E<lt>stdio.hE<gt>\n"
+"#include E<lt>errno.hE<gt>\n"
+"#include E<lt>aio.hE<gt>\n"
+"#include E<lt>signal.hE<gt>\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid "#define BUF_SIZE 20 /* Size of buffers for read operations */\n"
+msgstr "#define BUF_SIZE 20 /* размер буферов для операций чтения */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid "#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0)\n"
+msgstr "#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0)\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"struct ioRequest { /* Application-defined structure for tracking\n"
+" I/O requests */\n"
+" int reqNum;\n"
+" int status;\n"
+" struct aiocb *aiocbp;\n"
+"};\n"
+msgstr ""
+"struct ioRequest { /* определяемая приложением структура для \n"
+" слежения за запросами ввода-вывода */\n"
+" int reqNum;\n"
+" int status;\n"
+" struct aiocb *aiocbp;\n"
+"};\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static volatile sig_atomic_t gotSIGQUIT = 0;\n"
+" /* On delivery of SIGQUIT, we attempt to\n"
+" cancel all outstanding I/O requests */\n"
+msgstr ""
+"static volatile sig_atomic_t gotSIGQUIT = 0;\n"
+" /* при получении SIGQUIT мы пытаемся отменить \n"
+" все невыполненные запросы ввода-вывода */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static void /* Handler for SIGQUIT */\n"
+"quitHandler(int sig)\n"
+"{\n"
+" gotSIGQUIT = 1;\n"
+"}\n"
+msgstr ""
+"static void /* обработчик SIGQUIT */\n"
+"quitHandler(int sig)\n"
+"{\n"
+" gotSIGQUIT = 1;\n"
+"}\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid "#define IO_SIGNAL SIGUSR1 /* Signal used to notify I/O completion */\n"
+msgstr ""
+"#define IO_SIGNAL SIGUSR1 /* сигнал, уведомляющий о завершении\n"
+" ввода-вывода */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+"static void /* Handler for I/O completion signal */\n"
+"aioSigHandler(int sig, siginfo_t *si, void *ucontext)\n"
+"{\n"
+" if (si-E<gt>si_code == SI_ASYNCIO) {\n"
+" write(STDOUT_FILENO, \"I/O completion signal received\\en\", 31);\n"
+msgstr ""
+"static void /* обработчик завершения ввода-вывода */\n"
+"aioSigHandler(int sig, siginfo_t *si, void *ucontext)\n"
+"{\n"
+" if (si-E<gt>si_code == SI_ASYNCIO) {\n"
+" write(STDOUT_FILENO, \"Получен сигнал завершения ввода-вывода\\en\", 31);\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" /* The corresponding ioRequest structure would be available as\n"
+" struct ioRequest *ioReq = si-E<gt>si_value.sival_ptr;\n"
+" and the file descriptor would then be available via\n"
+" ioReq-E<gt>aiocbp-E<gt>aio_fildes */\n"
+" }\n"
+"}\n"
+msgstr ""
+" /* соответствующая структура ioRequest была бы доступна как\n"
+" struct ioRequest *ioReq = si-E<gt>si_value.sival_ptr;\n"
+" а файловый дескриптор был бы доступен через\n"
+" ioReq-E<gt>aiocbp-E<gt>aio_fildes */\n"
+" }\n"
+"}\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid ""
+#| "int\n"
+#| "main(int argc, char *argv[])\n"
+#| "{\n"
+#| " struct ioRequest *ioList;\n"
+#| " struct aiocb *aiocbList;\n"
+#| " struct sigaction sa;\n"
+#| " int s, j;\n"
+#| " int numReqs; /* Total number of queued I/O requests */\n"
+#| " int openReqs; /* Number of I/O requests still in progress */\n"
+msgid ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" struct sigaction sa;\n"
+" int s;\n"
+" int numReqs; /* Total number of queued I/O requests */\n"
+" int openReqs; /* Number of I/O requests still in progress */\n"
+msgstr ""
+"int\n"
+"main(int argc, char *argv[])\n"
+"{\n"
+" struct ioRequest *ioList;\n"
+" struct aiocb *aiocbList;\n"
+" struct sigaction sa;\n"
+" int s, j;\n"
+" int numReqs; /* общее количество устанавливаемых в очередь\n"
+" запросов ввода-вывода */\n"
+" int openReqs; /* количество выполняющихся запросов\n"
+" ввода-вывода */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (argc E<lt> 2) {\n"
+" fprintf(stderr, \"Usage: %s E<lt>pathnameE<gt> E<lt>pathnameE<gt>...\\en\",\n"
+" argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+msgstr ""
+" if (argc E<lt> 2) {\n"
+" fprintf(stderr, \"Использование: %s E<lt>имя_файлаE<gt> E<lt>имя_файлаE<gt>...\\en\",\n"
+" argv[0]);\n"
+" exit(EXIT_FAILURE);\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " numReqs = argc - 1;\n"
+msgstr " numReqs = argc - 1;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid " /* Allocate our arrays */\n"
+msgid " /* Allocate our arrays. */\n"
+msgstr " /* выделяем место под массивы */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid ""
+#| " ioList = calloc(numReqs, sizeof(struct ioRequest));\n"
+#| " if (ioList == NULL)\n"
+#| " errExit(\"calloc\");\n"
+msgid ""
+" struct ioRequest *ioList = calloc(numReqs, sizeof(*ioList));\n"
+" if (ioList == NULL)\n"
+" errExit(\"calloc\");\n"
+msgstr ""
+" ioList = calloc(numReqs, sizeof(struct ioRequest));\n"
+" if (ioList == NULL)\n"
+" errExit(\"calloc\");\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid ""
+#| " aiocbList = calloc(numReqs, sizeof(struct aiocb));\n"
+#| " if (aiocbList == NULL)\n"
+#| " errExit(\"calloc\");\n"
+msgid ""
+" struct aiocb *aiocbList = calloc(numReqs, sizeof(*aiocbList));\n"
+" if (aiocbList == NULL)\n"
+" errExit(\"calloc\");\n"
+msgstr ""
+" aiocbList = calloc(numReqs, sizeof(struct aiocb));\n"
+" if (aiocbList == NULL)\n"
+" errExit(\"calloc\");\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid " /* Establish handlers for SIGQUIT and the I/O completion signal */\n"
+msgid " /* Establish handlers for SIGQUIT and the I/O completion signal. */\n"
+msgstr " /* указываем обработчики SIGQUIT и сигнала завершения ввода-вывода */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" sa.sa_flags = SA_RESTART;\n"
+" sigemptyset(&sa.sa_mask);\n"
+msgstr ""
+" sa.sa_flags = SA_RESTART;\n"
+" sigemptyset(&sa.sa_mask);\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" sa.sa_handler = quitHandler;\n"
+" if (sigaction(SIGQUIT, &sa, NULL) == -1)\n"
+" errExit(\"sigaction\");\n"
+msgstr ""
+" sa.sa_handler = quitHandler;\n"
+" if (sigaction(SIGQUIT, &sa, NULL) == -1)\n"
+" errExit(\"sigaction\");\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" sa.sa_flags = SA_RESTART | SA_SIGINFO;\n"
+" sa.sa_sigaction = aioSigHandler;\n"
+" if (sigaction(IO_SIGNAL, &sa, NULL) == -1)\n"
+" errExit(\"sigaction\");\n"
+msgstr ""
+" sa.sa_flags = SA_RESTART | SA_SIGINFO;\n"
+" sa.sa_sigaction = aioSigHandler;\n"
+" if (sigaction(IO_SIGNAL, &sa, NULL) == -1)\n"
+" errExit(\"sigaction\");\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid ""
+#| " /* Open each file specified on the command line, and queue\n"
+#| " a read request on the resulting file descriptor */\n"
+msgid ""
+" /* Open each file specified on the command line, and queue\n"
+" a read request on the resulting file descriptor. */\n"
+msgstr ""
+" /* открываем каждый файл, заданный в командной строке и ставим в\n"
+" очередь запрос на чтение полученного файлового дескриптора */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid ""
+#| " for (j = 0; j E<lt> numReqs; j++) {\n"
+#| " ioList[j].reqNum = j;\n"
+#| " ioList[j].status = EINPROGRESS;\n"
+#| " ioList[j].aiocbp = &aiocbList[j];\n"
+msgid ""
+" for (size_t j = 0; j E<lt> numReqs; j++) {\n"
+" ioList[j].reqNum = j;\n"
+" ioList[j].status = EINPROGRESS;\n"
+" ioList[j].aiocbp = &aiocbList[j];\n"
+msgstr ""
+" for (j = 0; j E<lt> numReqs; j++) {\n"
+" ioList[j].reqNum = j;\n"
+" ioList[j].status = EINPROGRESS;\n"
+" ioList[j].aiocbp = &aiocbList[j];\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" ioList[j].aiocbp-E<gt>aio_fildes = open(argv[j + 1], O_RDONLY);\n"
+" if (ioList[j].aiocbp-E<gt>aio_fildes == -1)\n"
+" errExit(\"open\");\n"
+" printf(\"opened %s on descriptor %d\\en\", argv[j + 1],\n"
+" ioList[j].aiocbp-E<gt>aio_fildes);\n"
+msgstr ""
+" ioList[j].aiocbp-E<gt>aio_fildes = open(argv[j + 1], O_RDONLY);\n"
+" if (ioList[j].aiocbp-E<gt>aio_fildes == -1)\n"
+" errExit(\"open\");\n"
+" printf(\"opened %s on descriptor %d\\en\", argv[j + 1],\n"
+" ioList[j].aiocbp-E<gt>aio_fildes);\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" ioList[j].aiocbp-E<gt>aio_buf = malloc(BUF_SIZE);\n"
+" if (ioList[j].aiocbp-E<gt>aio_buf == NULL)\n"
+" errExit(\"malloc\");\n"
+msgstr ""
+" ioList[j].aiocbp-E<gt>aio_buf = malloc(BUF_SIZE);\n"
+" if (ioList[j].aiocbp-E<gt>aio_buf == NULL)\n"
+" errExit(\"malloc\");\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" ioList[j].aiocbp-E<gt>aio_nbytes = BUF_SIZE;\n"
+" ioList[j].aiocbp-E<gt>aio_reqprio = 0;\n"
+" ioList[j].aiocbp-E<gt>aio_offset = 0;\n"
+" ioList[j].aiocbp-E<gt>aio_sigevent.sigev_notify = SIGEV_SIGNAL;\n"
+" ioList[j].aiocbp-E<gt>aio_sigevent.sigev_signo = IO_SIGNAL;\n"
+" ioList[j].aiocbp-E<gt>aio_sigevent.sigev_value.sival_ptr =\n"
+" &ioList[j];\n"
+msgstr ""
+" ioList[j].aiocbp-E<gt>aio_nbytes = BUF_SIZE;\n"
+" ioList[j].aiocbp-E<gt>aio_reqprio = 0;\n"
+" ioList[j].aiocbp-E<gt>aio_offset = 0;\n"
+" ioList[j].aiocbp-E<gt>aio_sigevent.sigev_notify = SIGEV_SIGNAL;\n"
+" ioList[j].aiocbp-E<gt>aio_sigevent.sigev_signo = IO_SIGNAL;\n"
+" ioList[j].aiocbp-E<gt>aio_sigevent.sigev_value.sival_ptr =\n"
+" &ioList[j];\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" s = aio_read(ioList[j].aiocbp);\n"
+" if (s == -1)\n"
+" errExit(\"aio_read\");\n"
+" }\n"
+msgstr ""
+" s = aio_read(ioList[j].aiocbp);\n"
+" if (s == -1)\n"
+" errExit(\"aio_read\");\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " openReqs = numReqs;\n"
+msgstr " openReqs = numReqs;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid " /* Loop, monitoring status of I/O requests */\n"
+msgid " /* Loop, monitoring status of I/O requests. */\n"
+msgstr " /* цикл, отслеживание состояние запросов ввода-вывода */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" while (openReqs E<gt> 0) {\n"
+" sleep(3); /* Delay between each monitoring step */\n"
+msgstr ""
+" while (openReqs E<gt> 0) {\n"
+" sleep(3); /* задержка между проверками */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " if (gotSIGQUIT) {\n"
+msgstr " if (gotSIGQUIT) {\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid ""
+#| " /* On receipt of SIGQUIT, attempt to cancel each of the\n"
+#| " outstanding I/O requests, and display status returned\n"
+#| " from the cancellation requests */\n"
+msgid ""
+" /* On receipt of SIGQUIT, attempt to cancel each of the\n"
+" outstanding I/O requests, and display status returned\n"
+" from the cancelation requests. */\n"
+msgstr ""
+" /* при получении SIGQUIT пытаемся отменить каждый\n"
+" невыполненный запрос ввода-вывода и показываем состояние,\n"
+" возвращаемое при отмене запроса */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " printf(\"got SIGQUIT; canceling I/O requests: \\en\");\n"
+msgstr " printf(\"получен SIGQUIT; отмена запросов ввода-вывода: \\en\");\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid ""
+#| " for (j = 0; j E<lt> numReqs; j++) {\n"
+#| " if (ioList[j].status == EINPROGRESS) {\n"
+#| " printf(\" Request %d on descriptor %d:\", j,\n"
+#| " ioList[j].aiocbp-E<gt>aio_fildes);\n"
+#| " s = aio_cancel(ioList[j].aiocbp-E<gt>aio_fildes,\n"
+#| " ioList[j].aiocbp);\n"
+#| " if (s == AIO_CANCELED)\n"
+#| " printf(\"I/O canceled\\en\");\n"
+#| " else if (s == AIO_NOTCANCELED)\n"
+#| " printf(\"I/O not canceled\\en\");\n"
+#| " else if (s == AIO_ALLDONE)\n"
+#| " printf(\"I/O all done\\en\");\n"
+#| " else\n"
+#| " errMsg(\"aio_cancel\");\n"
+#| " }\n"
+#| " }\n"
+msgid ""
+" for (size_t j = 0; j E<lt> numReqs; j++) {\n"
+" if (ioList[j].status == EINPROGRESS) {\n"
+" printf(\" Request %zu on descriptor %d:\", j,\n"
+" ioList[j].aiocbp-E<gt>aio_fildes);\n"
+" s = aio_cancel(ioList[j].aiocbp-E<gt>aio_fildes,\n"
+" ioList[j].aiocbp);\n"
+" if (s == AIO_CANCELED)\n"
+" printf(\"I/O canceled\\en\");\n"
+" else if (s == AIO_NOTCANCELED)\n"
+" printf(\"I/O not canceled\\en\");\n"
+" else if (s == AIO_ALLDONE)\n"
+" printf(\"I/O all done\\en\");\n"
+" else\n"
+" perror(\"aio_cancel\");\n"
+" }\n"
+" }\n"
+msgstr ""
+" for (j = 0; j E<lt> numReqs; j++) {\n"
+" if (ioList[j].status == EINPROGRESS) {\n"
+" printf(\" запрос %d в дескриптор %d:\", j,\n"
+" ioList[j].aiocbp-E<gt>aio_fildes);\n"
+" s = aio_cancel(ioList[j].aiocbp-E<gt>aio_fildes,\n"
+" ioList[j].aiocbp);\n"
+" if (s == AIO_CANCELED)\n"
+" printf(\"ввод-вывод отменён\\en\");\n"
+" else if (s == AIO_NOTCANCELED)\n"
+" printf(\"ввод-вывод не отменён\\en\");\n"
+" else if (s == AIO_ALLDONE)\n"
+" printf(\"I/O all done\\en\");\n"
+" else\n"
+" errMsg(\"aio_cancel\");\n"
+" }\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" gotSIGQUIT = 0;\n"
+" }\n"
+msgstr ""
+" gotSIGQUIT = 0;\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid ""
+#| " /* Check the status of each I/O request that is still\n"
+#| " in progress */\n"
+msgid ""
+" /* Check the status of each I/O request that is still\n"
+" in progress. */\n"
+msgstr ""
+" /* проверяем состояние каждого запроса ввода-вывода, которые\n"
+" ещё не завершились */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid ""
+#| " printf(\"aio_error():\\en\");\n"
+#| " for (j = 0; j E<lt> numReqs; j++) {\n"
+#| " if (ioList[j].status == EINPROGRESS) {\n"
+#| " printf(\" for request %d (descriptor %d): \",\n"
+#| " j, ioList[j].aiocbp-E<gt>aio_fildes);\n"
+#| " ioList[j].status = aio_error(ioList[j].aiocbp);\n"
+msgid ""
+" printf(\"aio_error():\\en\");\n"
+" for (size_t j = 0; j E<lt> numReqs; j++) {\n"
+" if (ioList[j].status == EINPROGRESS) {\n"
+" printf(\" for request %zu (descriptor %d): \",\n"
+" j, ioList[j].aiocbp-E<gt>aio_fildes);\n"
+" ioList[j].status = aio_error(ioList[j].aiocbp);\n"
+msgstr ""
+" printf(\"aio_error():\\en\");\n"
+" for (j = 0; j E<lt> numReqs; j++) {\n"
+" if (ioList[j].status == EINPROGRESS) {\n"
+" printf(\" запрос %d (дескриптор %d): \",\n"
+" j, ioList[j].aiocbp-E<gt>aio_fildes);\n"
+" ioList[j].status = aio_error(ioList[j].aiocbp);\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid ""
+#| " switch (ioList[j].status) {\n"
+#| " case 0:\n"
+#| " printf(\"I/O succeeded\\en\");\n"
+#| " break;\n"
+#| " case EINPROGRESS:\n"
+#| " printf(\"In progress\\en\");\n"
+#| " break;\n"
+#| " case ECANCELED:\n"
+#| " printf(\"Canceled\\en\");\n"
+#| " break;\n"
+#| " default:\n"
+#| " errMsg(\"aio_error\");\n"
+#| " break;\n"
+#| " }\n"
+msgid ""
+" switch (ioList[j].status) {\n"
+" case 0:\n"
+" printf(\"I/O succeeded\\en\");\n"
+" break;\n"
+" case EINPROGRESS:\n"
+" printf(\"In progress\\en\");\n"
+" break;\n"
+" case ECANCELED:\n"
+" printf(\"Canceled\\en\");\n"
+" break;\n"
+" default:\n"
+" perror(\"aio_error\");\n"
+" break;\n"
+" }\n"
+msgstr ""
+" switch (ioList[j].status) {\n"
+" case 0:\n"
+" printf(\"ввод-вывод завершён\\en\");\n"
+" break;\n"
+" case EINPROGRESS:\n"
+" printf(\"выполняется\\en\");\n"
+" break;\n"
+" case ECANCELED:\n"
+" printf(\"отменён\\en\");\n"
+" break;\n"
+" default:\n"
+" errMsg(\"aio_error\");\n"
+" break;\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" if (ioList[j].status != EINPROGRESS)\n"
+" openReqs--;\n"
+" }\n"
+" }\n"
+" }\n"
+msgstr ""
+" if (ioList[j].status != EINPROGRESS)\n"
+" openReqs--;\n"
+" }\n"
+" }\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid " printf(\"All I/O requests completed\\en\");\n"
+msgstr " printf(\"Завершены все запросы ввода-вывода\\en\");\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid " /* Check status return of all I/O requests */\n"
+msgid " /* Check status return of all I/O requests. */\n"
+msgstr " /* проверяем возвращаемое состояние всех запросов ввода-вывода */\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid ""
+#| " printf(\"aio_return():\\en\");\n"
+#| " for (j = 0; j E<lt> numReqs; j++) {\n"
+#| " ssize_t s;\n"
+msgid ""
+" printf(\"aio_return():\\en\");\n"
+" for (size_t j = 0; j E<lt> numReqs; j++) {\n"
+" ssize_t s;\n"
+msgstr ""
+" printf(\"aio_return():\\en\");\n"
+" for (j = 0; j E<lt> numReqs; j++) {\n"
+" ssize_t s;\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, fuzzy, no-wrap
+#| msgid ""
+#| " s = aio_return(ioList[j].aiocbp);\n"
+#| " printf(\" for request %d (descriptor %d): %zd\\en\",\n"
+#| " j, ioList[j].aiocbp-E<gt>aio_fildes, s);\n"
+#| " }\n"
+msgid ""
+" s = aio_return(ioList[j].aiocbp);\n"
+" printf(\" for request %zu (descriptor %d): %zd\\en\",\n"
+" j, ioList[j].aiocbp-E<gt>aio_fildes, s);\n"
+" }\n"
+msgstr ""
+" s = aio_return(ioList[j].aiocbp);\n"
+" printf(\" запрос %d (дескриптор %d): %zd\\en\",\n"
+" j, ioList[j].aiocbp-E<gt>aio_fildes, s);\n"
+" }\n"
+
+#. type: Plain text
+#: debian-bookworm opensuse-leap-15-6
+#, no-wrap
+msgid ""
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+msgstr ""
+" exit(EXIT_SUCCESS);\n"
+"}\n"
+
+#. type: TH
+#: debian-unstable opensuse-tumbleweed
+#, no-wrap
+msgid "2023-05-03"
+msgstr "3 мая 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"