最新消息:比度技术-是关注互联网技术的个人博客,大部分内容来自互联网,以作为笔记查阅。

Linux修改进程名称(setproctitle())

编程开发 bidu 76浏览

main函数,作为程序启动入口函数。main函数的原型是int main(int argc , char *argv[]);其中argc表示命令行参数的个数;argv是一个指针数组,保存所有命令行字符串。Linux进程名称是通过命令行参数argv[0]来表示的。

Linux 还有环境变量参数信息,表示进程执行需要的所有环境变量信息。通过全局变量

Char **environ;可以访问环境变量。

命令行参数argv和环境变量信息environ是在一块连续的内存中表示的,并且environ紧跟在argv后面。如下图:

1

修改进程名称

按理说,修改进程名称,只需要修改argv[0]指向的内存的值为所需要的值即可。但是当我们要修改的值超过argv[0]所指向的内存空间大小时,再这样直接修改,就会覆盖掉一部分argv[1]的值,因为从上面的图中,很容易就可以看出。

这时候,该怎么做呢?

1、必须重新分配一块连续的内存空间,把argv和environ的参数都复制到新的空间。

2、修改argv[0]为所需要修改的值。

一个参考实现:可以参考redis

参考:https://blog.csdn.net/hengshan/article/details/7835981

 

 

转载请注明:比度技术-关注互联网技术的个人博客 » Linux修改进程名称(setproctitle())