程序运行时动态修改进程名 |
发布: 2014-04-20 16:23 |
在做平台的过程中,碰到一个可能的需要,平台服务的的进程名一般都不变的, 如果需要动态在外部监控进程的执行状态,比如程序正在执行什么功能, 也许可以通过动态修改进程的名字实现,可以把正在执行的功能做个摘要放在进程名字中。 在linux上,有一个系统调用prctl,这是一个综合性的函数,可以实现一些进程的控制功能。 动态修改进程名的功能也就是在prctl函数。 来看看prctl的函数原型, NAME prctl - operations on a process SYNOPSIS [code type="C"] #include int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5); [/code] 虽然参数比较多,也是由于这个函数包含了太多功能,这一特点与IO操作的ioctl函数非常类型。 修改进程名的话,则只使用到前两个参数: prctl(PR_SET_NAME, (unsigned long)"newprocessname"); 注意使用prctl修改的进程名,可能会影响查看进程列表的方式。 使用ps a可以显示新的名字,而使用ps ax时却还是原来的名字。 另外,使用pstree也会显示新的名字。 该函数还有设置进程优级的功能,对该函数的其他功能请详细参与函数手册。 |
原文: http://qtchina.tk/?q=node/801 |
Powered by zexport
|