linux手册翻译——pthread_setname_np(3)

\color{#A00000}{NAME}
pthread_setname_np, pthread_getname_np :设置/获取线程的名称

\color{#A00000}{SYNOPSIS}

#define _GNU_SOURCE             /* See feature_test_macros(7) */
#include <pthread.h>

int pthread_setname_np(pthread_t thread, const char *name);
int pthread_getname_np(pthread_t thread, char *name, size_t len);

编译和链接需要参数 : -pthread

\color{#A00000}{DESCRIPTION}
默认情况下,所有使用 pthread_create() 创建的线程都继承程序名称。 pthread_setname_np() 函数可用于为线程设置唯一名称,这对于调试多线程应用程序非常有用。 线程名称是一个有意义的 C 语言字符串,包括终止空字节 ('\0')在内,其长度限制为 16 个字符。 thread 参数指定要更改名称的线程; name 指定新名称。
pthread_getname_np() 函数可用于获取线程的名称。 thread 参数指定线程。 缓冲区name用于存放返回的线程名称; len 指定缓冲区的可用字节数。 区长度至少应为 16 个字符。 输出缓冲区中返回的线程名称将以空 ('\0')终止。

\color{#A00000}{RETURN VALUE}
成功时,这些函数返回 0; 出错时,它们返回一个非零错误号。

\color{#A00000}{ERRORS}
pthread_setname_np() 函数可能会失败并出现以下错误:
ERANGE name 指定的字符串长度超过了允许的限制。

pthread_setname_np() 函数可能会失败并出现以下错误:
ERANGE name 和 len 指定的缓冲区太小,无法容纳线程名称。

如果这些函数中的任何一个无法打开 /proc/self/task/[tid]/comm,则调用可能会失败并出现 open(2) 中描述的错误之一。(见NOTES)

\color{#A00000}{NOTES}
从实现上讲,pthread_setname_np()将线程的名称写入到了/proc FS的comm文件:/proc/self/task/[tid]/comm.
pthread_getname_np()则是从相同的位置获取线程名

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Google 链接Systrace是一个platform-provided工具,用于记录设备在短时间内的活动。 允...
    ArcherZang阅读 9,817评论 0 2
  • 1,NSObject中description属性的意义,它可以重写吗?答案:每当 NSLog(@"")函数中出现 ...
    eightzg阅读 9,617评论 2 19
  • signal - linux 信号机制概览 linux支持两种信号: POSIX可靠信号(下称标准信号) POSI...
    蟹蟹宁阅读 10,023评论 0 4
  • 多线程系列篇章计划内容:iOS多线程编程(一) 多线程基础[https://juejin.im/post/6890...
    卖馍工程师阅读 2,744评论 1 0
  • 19.01_异常(异常的概述和分类) A:异常的概述异常就是Java程序在运行过程中出现的错误。 B:异常的分类通...
    冰川_阅读 3,068评论 0 1