Solaris10修改进程名称

来源:互联网 发布:开淘宝充值店赚钱吗 编辑:程序博客网 时间:2024/04/29 16:36

对于多进程的程序,由于会针对同一可执行文件起多个进程,这样用ps –ef会看到多个同名的进程在运行。存在辨别到底是哪个进程的问题,所要要针对每一个进程取一个唯一的名字。

搜索了一下,发现网上的方法都是修改argv[0],但是此方法只在linux成功。而在Solaris10上,此方法只对/usr/ucb/ps生效,而对默认的ps(即/usr/bin/ps)不生效。

试了几个方法,最后使用包装程序+exec搞定了此问题。方法如下:

假设要运行的程序的代码如下:

//test.cpp

#include <unistd.h>

 

int main()

{

        pause();

        return 0;

}

 

将其编译成test

 

包装程序的代码如下,要将进程名改成1234

//change_process_name.cpp

#include <unistd.h>

#include <sys/types.h>

 

int main()

{

        pid_t pid = fork();

        if(0 == pid)

        {

                execl("./test", "1234", (char*)0);

        }

        pause();

 

        return 0;

}

将其编译成change_process_name

 

运行change_procee_name

运行ps -ef | grep change_procee_name

root  4449 19184   0 13:24:46 pts/7       0:00 ./change_process_name

再运行ps -ef | grep 4449,可以看到进程名已经变成1234了:

w2liu  4450  4449   0 13:24:46 pts/7       0:00 1234

 

以上方法在Solaris10CentOS5.5上测试通过。

原创粉丝点击