.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2008 Michael Kerrisk .\" and Copyright 2003 Abhijit Menon-Sen .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" 2004-05-31, added tgkill, ahu, aeb .\" 2008-01-15 mtk -- rewrote DESCRIPTION .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH tkill 2 "2 мая 2024 г." "Справочные страницы Linux 6.9.1" .SH ИМЯ tkill, tgkill \- посылает сигнал нити .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP /* определения констант \fBSIG*\fP */ \fB#include \fP /* определения констант \fBSYS_*\fP */ \fB#include \fP .P \fB[[deprecated]] int syscall(SYS_tkill, pid_t \fP\fItid\fP\fB, int \fP\fIsig\fP\fB);\fP .P \fB#include \fP .P \fBint tgkill(pid_t \fP\fItgid\fP\fB, pid_t \fP\fItid\fP\fB, int \fP\fIsig\fP\fB);\fP .fi .P \fINote\fP: glibc provides no wrapper for \fBtkill\fP(), necessitating the use of \fBsyscall\fP(2). .SH ОПИСАНИЕ \fBtgkill\fP() отправляет сигнал \fIsig\fP нити с ID \fItid\fP в группе нитей \fItgid\fP. Для сравнения, \fBkill\fP(2) может быть использована только для отправки сигнала процессу (т.е., группе нитей) как единому целому и сигнал будет доставлен произвольной нити внутри этого процесса. .P .\" FIXME Maybe say something about the following: .\" http://sourceware.org/bugzilla/show_bug.cgi?id=12889 .\" .\" Quoting Rich Felker : .\" .\" There is a race condition in pthread_kill: it is possible that, .\" between the time pthread_kill reads the pid/tid from the target .\" thread descriptor and the time it makes the tgkill syscall, .\" the target thread terminates and the same tid gets assigned .\" to a new thread in the same process. .\" .\" (The tgkill syscall was designed to eliminate a similar race .\" condition in tkill, but it only succeeded in eliminating races .\" where the tid gets reused in a different process, and does not .\" help if the same tid gets assigned to a new thread in the .\" same process.) .\" .\" The only solution I can see is to introduce a mutex that ensures .\" that a thread cannot exit while pthread_kill is being called on it. .\" .\" Note that in most real-world situations, like almost all race .\" conditions, this one will be extremely rare. To make it .\" measurable, one could exhaust all but 1-2 available pid values, .\" possibly by lowering the max pid parameter in /proc, forcing .\" the same tid to be reused rapidly. Вызов \fBtkill\fP() \(em устаревший предшественник \fBtgkill\fP(). Он позволяет задавать только идентификатор нити\-получателя, что может привести к уведомлению не той нити, если нить завершила работу и её идентификатор используется повторно. Не используйте данный системный вызов. .P Это вызовы интерфейса системного уровня, они предназначены для внутреннего использования в библиотеке нитей. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении возвращается 0. При ошибке возвращается \-1, а в \fIerrno\fP содержится код ошибки. .SH ОШИБКИ .TP \fBEAGAIN\fP Достигнут ограничитель ресурса \fBRLIMIT_SIGPENDING\fP и \fIsig\fP содержит сигнал реального времени. .TP \fBEAGAIN\fP Недостаточное количество памяти ядра и \fIsig\fP содержит сигнал реального времени. .TP \fBEINVAL\fP Указан некорректный идентификатор нити, группы или сигнал. .TP \fBEPERM\fP Отказано в доступе. См. \fBkill\fP(2) для получения подробностей о необходимом доступе. .TP \fBESRCH\fP Не существует процесса с указанным идентификатором нити (и идентификатором группы). .SH СТАНДАРТЫ Linux. .SH ИСТОРИЯ .TP \fBtkill\fP() Linux 2.4.19 / 2.5.4. .TP \fBtgkill\fP() Linux 2.5.75, glibc 2.30. .SH ПРИМЕЧАНИЯ См. описание \fBCLONE_THREAD\fP в \fBclone\fP(2) для пояснения по поводу групп нитей. .SH "СМОТРИТЕ ТАКЖЕ" \fBclone\fP(2), \fBgettid\fP(2), \fBkill\fP(2), \fBrt_sigqueueinfo\fP(2) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) Azamat Hackimov , Dmitry Bolkhovskikh , Yuri Kozlov и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .