多线程编程时,如果没有设置每个线程的名字,默认的是进程的名字。为每个线程设置名字,比较好管理和调试;
       对于多线程应用程序,如果能够给每个线程命名,那么调试起来的便利是不言而喻的。

1、函数原型

#include <sys/prctl.h>    //头文件,Linux下调用int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5);

2、功能

prctl(PR_SET_NAME, “process_name”);

第一个参数是操作类型,指定PR_SET_NAME(对应数字15),即设置进程名;
第二个参数是进程名字符串,长度至多16字节。

3、函数调用测试用例

void setPthreadName(char *name)
{if(name != NULL){prctl(PR_SET_NAME, (unsigned long)*name);   //name 最多16个字符}
}

4、实例

可以用prctl给进程内其它线程命名的接口,测试代码如下:

#include <stdio.h>
#include <pthread.h>
#include <sys/prctl.h>
#include <unistd.h>void* pFunc(void *arg)
{char name[32];prctl(PR_SET_NAME, (unsigned long)"xx");prctl(PR_GET_NAME, (unsigned long)name);printf("%s\n", name);while (1)sleep(1);
}int main(void)
{pthread_t tid;pthread_create(&tid, NULL, pFunc, NULL);pthread_join(tid, NULL);return 0;
}

参考:

http://www.kernel.org/doc/man-pages/online/pages/man2/prctl.2.html
http://www.cppblog.com/beautykingdom/archive/2009/11/08/100419.aspx

Linux—用prctl()给线程命名相关推荐

  1. 用prctl给线程命名

    prctl Test name:  prctl Syscall number:  172 Syscall name:  prctl  (man) File name:  prctl.txt  (122 ...

  2. 使用prctl为线程命名

    使用prctl的PR_SET_NAME选项功能可以为线程命名,测试代码如下: #include <stdio.h> #include <pthread.h> #include ...

  3. prctl()函数给线程命名

    今天看代码看到一个prctl()函数函数,百度了一下才知道是给线程命名(当然还有其他的功能).下面简述函数的用法: 1.包含的头文件为 sys/prctl.h; 2.函数用法:int 用法:prctl ...

  4. linux 编程--prctl()函数应用

    int prctl ( int option,unsigned long arg2,unsigned long arg3,unsigned long arg4,unsigned long arg5 ) ...

  5. Linux下 prctl 进程控制

    Linux 下 prctl 进程控制 Linux下可通过 prctl进行进程各种控制 #include <sys/prctl.h>int prctl(int option, unsigne ...

  6. linux的进程与线程通信方式,Linux的进程/线程间通信方式总结

    Linux系统中的进程间通信方式主要以下几种: 同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程 ...

  7. prctl()为线程指定名字

    Llinu中使用prctl函数为线程指定名字 一.前言     有时候我们通过fork().pthread_create()创建出来的新任务其名字和创建任务的parent是一样的,如果有需要,该如何修 ...

  8. linux c prctl 进程相关 调用指令 简介

    函数申明 int prctl ( int option,unsigned long arg2,unsigned long arg3,unsigned long arg4,unsigned long a ...

  9. Windows和Linux下通用的线程接口

    对于多线程开发,Linux下有pthread线程库,使用起来比较方便,而Windows没有,对于涉及到多线程的跨平台代码开发,会带来不便.这里参考网络上的一些文章,整理了在Windows和Linux下 ...

最新文章

  1. Js面试题(一)--js实现数组去重怎么实现?
  2. Python情感分析:鹿晗的粉丝们究竟原谅他了吗?
  3. JetsonXavier/Tx2性能测试比对
  4. Android SlidingMenu以及ActionBarSherlock的基础使用教程
  5. 2020年女人体重表,看看你是不是标准的模特体重
  6. 3.IDA-数据显示窗口(导出窗口、导入窗口、String窗口、...窗口)
  7. flask项目开发中,遇到http 413错误
  8. html是以一种通用的方法来,c++ 有一种通用的方法来使函数模板适应为多态函数对象吗?...
  9. 【Boost】Boost使用几条简单笔记
  10. Java 8 为什么要使用Lambda表达式
  11. 电商运营、美工必备导航类网站,有效提高工作效率
  12. 基于QItemDelegate的例子1 SpinBoxDelegate
  13. 马斯克再次创造历史!三位太空游客坐五手火箭成功升空,今晚达到空间站,票价3.5亿...
  14. 杨辉三角c语言 用队列形式,C语言杨辉三角(循环队列).doc
  15. C++setw函数的运用
  16. 逻辑结构定义及其分类
  17. 软件配置管理中基线(baseline)
  18. PyG搭建GCN实现链接预测
  19. 微信机器人网页版接口详解
  20. 鼠标上下滑轮时,来回乱跑的骚操作

热门文章

  1. 新能源电动汽车充换电站系统解决方案
  2. DVWA靶场搭建教程
  3. 需求分析课程项目——第一阶段
  4. 嵌入式系统初始化过程
  5. 表白html特效在线,html5 canvas酷炫表白爱心动画特效
  6. C++内存分析(四)
  7. 校招面试 - 计算机网络 - (非)对称加密 - 安全传输的基础
  8. VSCode产生的ipch文件夹占用C盘空间过大处理
  9. jupyter不小心点了logout怎么办
  10. pandas入门: 时间字符串转换为年月日