Solaris10修改进程名称

对于多进程的程序,由于会针对同一可执行文件起多个进程,这样用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上测试通过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值