linux修改进程名

一、linux中的进程名
    linux中有很多查看/操作进程的命令。
    这些命令的参数或显示的结果,有的是真实的进程名(top/pstree/pgrep/kill/killall),有的是进程的命令行参数(ps)。
    例如:有一个进程a.out,运行方式为:./a.out arg1 arg2
              这时如果用ps查看出来的结果是:./a.out arg1 arg2,即argv的内容。
              如果用top查看出来结果则是 a.out,kill/killall也必须以a.out为参数。

    所以,在修改进程名时,也有两种方法:1 修改真实的进程名, 2 修改命令行参数,或者两种兼用。

二、修改真实的进程名
    修改真实的进程名只需要用到函数prctl():

  1. #include <sys/prctl.h>
  2. int prctl(int option, unsigned long arg2, unsigned long arg3, unsigned long arg4, unsigned long arg5);

    prctl()还有很多其它用处,这里就不多说了,以下是修改进程名的代码。

  1. prctl( PR_SET_NAME, "procname", 0, 0);

三、修改命令行参数
    修改命令行参数只需要单纯修改 char **argv中的字符串就可以达到效果。
    但是:在进程内存中,命令行参数存储地址的后面(更高的地址),存储了进程的环境表。为了保护整个进程的运行环境,必须在修改之前备份命令行参数及环境表。

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...