prctl

Test name:  prctl

Syscall number:  172

Syscall name:  prctl  (man)

File name:  prctl.txt  (1225 bytes)

* * 说 明 * *int prctl(int option,unsigned long arg2,unsigned long arg3,unsigned long arg4,unsigned long arg5)这个系统调用指令是为进程制定而设计的,明确的选择取决于option:PR_GET_PDEATHSIG :返回处理器信号;PR_SET_PDEATHSIG :arg2作为处理器信号pdeath被输入,正如其名,如果父进程不能再用,进程接受这个信号。PR_GET_DUMPABLE :返回处理器标志dumpable;PR_SET_DUMPABLE :arg2作为处理器标志dumpable被输入。PR_GET_NAME :返回调用进程的进程名字给参数arg2; (Since Linux 2.6.9)PR_SET_NAME :把参数arg2作为调用进程的经常名字。(Since Linux 2.6.11)PR_GET_TIMING :PR_SET_TIMING :判定和修改进程计时模式,用于启用传统进程计时模式的 PR_TIMING_STATISTICAL,或用于启用基于时间戳的进程计时模式的 PR_TIMING_TIMESTAMP。CAP_CHOWN功能: 在一个_POSIX_CHOWN_RESTRICTED功能定义的系统。这会越过改变系统文件所有者和组所有的权限 CAP_DAC_OVERRIED功能: 如果_POSIX_ACL定义,就会越过所有的DAC访问,包括ACL执行访问,用CAP_LINUX_IMMUTABLE功能来排除DAC的访问 CAP_DAC_READ_SEARCH功能: 如果_POSIX_ACL定义,就会越过所有的DAC的读限制,并在所有的文件和目录里搜索,包括ACL限制。用CAP_LINUX_IMMUTABLE来限制DAC访问 CAP_FOWNER功能:越过文件说有的允许限制,如文件的所有者ID必须和用户ID一样,除了CAP_FSETID可用。它不会越过MAC和DAC限制 CAP_FSETID功能: 越过当设置文件的S_ISUID和S_ISGID位的时候,用户的ID必须和所有者ID匹配的限制,设置S-ISGID位的时候,组ID必须和所有者ID匹配的限制,用chown来设置S_ISUID和S_ISGID为的功能限制 CAP_FS_MASK功能: 用来回应suser()或是fsuser()。 CAP_KILL功能: 一个有有效用户ID的进程发送信号时必须匹配有效用户ID的功能会越过 CAP_SETGID功能: 允许setgid() 功能, 允许setgroups() 允许在socket里伪造gid CAP_SETUID功能: 允许set*uid()功能 允许伪造pid在socket CAP_SETPCAP 功能: 把所有的许可给所有的pid。或是把所有的许可删除 CAP_LINUX_IMMUTABLE功能: 允许更改S_IMMUTABLE和S_APPEND文件属性 CAP_NET_BIND_SERVICE功能: 允许绑定1024下的TCP/UDP套接字 CAP_NET_BROADCAST功能: 允许广播,监听多点传送 CAP_NET_ADMIN功能:允许配置接口 允许管理IP防火墙IP伪装和帐户 允许配置socket调试选项 允许修改路由表 允许配置socket上的进程的组属性 允许绑定所有地址的透明代理 允许配置TOS(服务类型) 允许配置混杂模式 允许清除驱动状态 允许多点传送 允许读或写系统记录 CAP_NET_RAW功能: 允许用RAW套接字 允许用PACKET套接字 CAP_IPC_LOCK功能: 允许琐定共享内存段 允许mlock和mlockall CAP_IPC_OWNER功能: 越过IPC所有权检查 CAP_SYS_MODULE功能:插入或删除内核模块CAP_SYS_RAWIO功能: 允许ioperm/iopl和/dev/prot的访问 允许/dev/mem和/dev/kmem访问 允许块设备访问(/dev/[sh]d??) CAP_SYS_CHROOT功能: 允许chroot() CAP_SYS_PTRACE功能: 允许ptrace()任何进程 CAP_SYS_PACCT功能: 允许配置进程帐号CAP_SYS_ADMIN功能: 允许配置安全钥匙 允许管理随机设备 允许设备管理 允许检查和配置磁盘限额 允许配置内核日志 允许配置域名 允许配置主机名 允许调用bdflush()命令 允许mount()和umount()命令 允许配置smb连接 允许root的ioctls 允许nfsservctl 允许VM86_REQUEST_IRQ 允许在alpha上读写pci配置 允许在mips上的irix_prctl 允许刷新所有的m68k缓存允许删除semaphores用CAP_CHOWN去代替"chown"IPC消息队列,标志和共享内存 允许锁定或是解锁共享内存段 允许开关swap 允许在socket伪装pids 允许设置块设备的缓存刷新 允许设置软盘驱动器 允许开关DMA开关 允许管理md设备 允许管理ide驱动 允许访问nvram设备 允许管理apm_bios,串口或是bttv电视设备 允许在isdn CAPI的驱动下生成命令 允许读取pci的非标准配置 允许DDI调试ioctl 允许发送qic-117命令 允许启动或禁止SCSI的控制和发送SCSI命令 允许配置加密口令在回路文件系统上 CAP_SYS_BOOT功能: 允许用reboot() 命令 CAP_SYS_NICE功能: 允许提高或设置其他进程的优先权 允许在自己的进程用FISO和实时的安排和配置 CAP_SYS_RESOURCE功能: 越过资源限制,设置资源限制 越过配额限制 越过保留的ext2文件系统 允许大于64hz的实时时钟中断 越过最大数目的控制终端 越过最大数目的键 CAP_SYS_TIME功能: 允许处理系统时钟 允许_stime 允许设置实时时钟 CAP_SYS_TTY_CONFIG功能:允许配置终端设备 允许vhangup()终端返回值PR_GET_DUMPABLE 和  PR_GET_KEEPCAPS 成功时返回0或者1。其他的option值都是成功时返回0。 错误时返回 -1,并设置相应的错误号。EINVAL————option的值不正确,或者当它是PR_SET_PDEATHSIG 时,参数arg2的值不是0或者信号数字。EBADF————无效的描述符

以下转自:http://blog.chinaunix.net/u/5251/showart.php?id=2087202

对于多线程应用程序,如果能够给每个线程命名,那么调试起来的便利是不言而喻的。

今天看LWN上的周报,看到有人正在给prctl添加给进程内其它线程命名的接口,并从中得知,给线程自身命名的接口已经存在,不由窃喜,遂写下以下验证代码:

#include<stdio.h>
#include<pthread.h>
#include<sys/prctl.h>

void* tmain(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, tmain,NULL);
        pthread_join(tid,NULL);

return 0;
}

1 》》函数原型《《

#include <sys/prctl.h>
 
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,即设置进程名

第二个参数是进程名字符串,长度至多16字节

OK,很简单吧!
3 》》实        例《《

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

————————————————
版权声明:本文为CSDN博主「bad_good_man」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bad_good_man/article/details/48787031

用prctl给线程命名相关推荐

  1. 使用prctl为线程命名

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

  2. Linux—用prctl()给线程命名

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

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

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

  4. Java获取当前线程的名字以及为线程命名

    为线程命名可以再构造方法中传入线程的名字,也可以在调用set方法来赋予名字 public class ThreadDemo {public static void main(String[] args ...

  5. Java-多线程-给线程命名

    Java-多线程-给线程命名 在Java中,通过继承Thread创建的线程,有以下两种方式可以给线程命名: 通过构造器命名 因为线程类继承自Thread类,所有也继承了Thread的name属性,可以 ...

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

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

  7. prctl()设定线程名

    基本介绍 prctl()原型为int prctl (int __option, -);用于控制主进程或者子进程的属性; 本文主要介绍使用PR_SET_NAME 这个flag设定线程的名字,这个在平常调 ...

  8. [Head First Java] - 给线程命名

    参考 - P503 public class RunThreads implements Runnable {public static void main (String[] args) {RunT ...

  9. Linux C/C++编程:prctl与pthread_setname_np

    prctl 理论 // 用 prctl 给线程命名, prctl是个系统调用 #include <sys/prctl.h> int prctl(int option, unsigned l ...

最新文章

  1. 他们翻遍用AI检测新冠的论文,一篇临床可用的也没有?!
  2. oracle数组元素所在key,oracle可变数组(VARRAY)
  3. python画曲线图例-如何使用python画曲线图
  4. matlab实现彩色图像灰度化的三种方法
  5. [JavaWeb基础] 025.JAVA把word转换成html
  6. pandas DataFrame 索引(二)
  7. Database之SQLSever:SQLSever数据表管理(GUI法/SQL语句命令法两种方法实现建立表、修改表,以及增、删、改、查)之详细攻略
  8. 三基站定位几何精度因子的简便运算
  9. vue点击其它侧边栏收缩_企业微信聊天侧边栏功能怎么开启?聊天侧边栏有什么用?...
  10. sqlserver查询补全时间_mssql 按日期分组(group by)查询统计的时候,没有数据补0的解决办法...
  11. throw new exception后程序不停止_Java之Exception剖析
  12. 这些月薪过万的公司你准备好了吗
  13. Win7C盘不能扩大怎么办?Win7C盘扩展卷不能点怎么解决
  14. HPU 1725: 感恩节KK专场——特殊的比赛日期【水】
  15. python实现千牛客服自动回复语_淘宝客服自动回复语录(客服自动回复大全)
  16. 利用公式实现RGB图转化为灰度图
  17. 人事工作中的Python运用——离职证明生成器
  18. 判断给到的年份是否为闰年
  19. 从台下到台上,我成为 GDE(谷歌开发者专家) 的经验分享
  20. 电脑搜索不到部分wifi,搜索不到部分2.4G频率的wif,手机开热点电脑搜不到wifi。

热门文章

  1. QR Code二维码识别
  2. css meta自适应,自适应网页
  3. 三星浏览器vr_通过WebVR在浏览器中带来VR体验
  4. 不同方式读入图片与HWC与RGB
  5. mysql 保留两位小数 查询_mysql查询结果保留两位小数
  6. mysql时间相减得到天数保留两位_mysql 中两个日期相减获得 天 小时 分钟 或者 小时:分钟的格式...
  7. php tp5框架新特性面试,tp5完整加载执行流程——thinkphp5 框架
  8. 试用新版浏览器,IE7 和 Firefox 2
  9. Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——2.3 仿制Snow相机和FaceU的边框/小脸模式
  10. 【学习笔记】Node.js Buffer(缓冲区)和Stream流的关系