TKILL - Linux手册页
时间:2019-08-20 17:59:35 来源:igfitidea点击:
Linux程序员手册 第2部分
更新日期: 2019-08-02
名称
tkill,tgkill-向线程发送信号
语法
int tkill(int tid, int sig); int tgkill(int tgid, int tid, int sig);
注意:tkill()没有glibc包装器;请参阅注释。
说明
tgkill()将信号sig发送到线程组tgid中具有线程ID tid的线程。 (相比之下,kill(2)只能用于将信号整体发送到一个进程(即线程组),并且该信号将传递到该进程内的任意线程。)
tkill()是tgkill()的过时的前身。它仅允许指定目标线程ID,如果线程终止并且其线程ID被回收,则可能导致发出错误的信号。避免使用此系统调用。
这些是原始系统调用接口,供内部线程库使用。
返回值
成功时,返回零。如果出错,则返回-1,并正确设置errno。
错误说明
- EAGAIN
- 达到RLIMIT_SIGPENDING资源限制,并且sig是实时信号。
- EAGAIN
- 可用的内核内存不足,并且sig是实时信号。
- EINVAL
- 指定了无效的线程ID,线程组ID或信号。
- EPERM
- 没有权限。有关所需的权限,请参见kill(2)。
- ESRCH
- 不存在具有指定线程ID(和线程组ID)的进程。
版本
从Linux 2.4.19 / 2.5.4开始支持tkill()。在Linux 2.5.75中添加了tgkill()。
对tgkill()的库支持已在版本2.30中添加到glibc。
遵循规范
tkill()和tgkill()是特定于Linux的,不应在旨在可移植的程序中使用。
备注
有关线程组的说明,请参见clone(2)中的CLONE_THREAD的描述。
Glibc不提供tkill()的包装器;使用syscall(2)调用它。在glibc 2.30之前,tgkill()还没有包装函数。
另外参见
clone(2),gettid(2),kill(2),rt_sigqueueinfo(2)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。