linux 下 修改fork出的子进程名称(附带python解决方案)


linux 下fork创建子进程,但是很多时候我们希望修改自己的子进程名称,可以使你的程序看起来更加个性化

linux c 下面是有proctl 可以解决这个问题的在fork创建的子进程里直接进行修改

 prctl(PR_SET_NAME,"PURE") 

直接搞定了,但是python 却在 os库和sys库里没有这个函数,百度说下一些第三方依赖库,我希望我的程序放在centos上可以直接跑,降低安装人员的学习成本,所以python下可以这么处理

import ctypes

libc = ctypes.CDLL('libc.so.6')

libc.prctl(15, 'pure')

这里写15其实就是 PRSETNAME 因为这里PRSETNAME 肯定是被c语言宏定义过,我去百度了PRSETNAME头文件,看到你了PRSETNAME值是15,都是c语言写的 所以我相信不会有太大差别,运行程序后,用lsof看自己进程监听的端口,发现名字变了,不再是python了

python  13751 root    3u  IPv4 37206750      0t0  TCP 192.168.1.10:d-fence (LISTEN)
pure    13752 root    3u  IPv4 37206750      0t0  TCP 192.168.1.10:d-fence (LISTEN)
pure    13753 root    3u  IPv4 37206750      0t0  TCP 192.168.1.10:d-fence (LISTEN)
pure    13754 root    3u  IPv4 37206750      0t0  TCP 192.168.1.10:d-fence (LISTEN)
pure    13755 root    3u  IPv4 37206750      0t0  TCP 192.168.1.10:d-fence (LISTEN)
pure    13756 root    3u  IPv4 37206750      0t0  TCP 192.168.1.10:d-fence (LISTEN)
pure    13757 root    3u  IPv4 37206750      0t0  TCP 192.168.1.10:d-fence (LISTEN)
pure    13758 root    3u  IPv4 37206750      0t0  TCP 192.168.1.10:d-fence (LISTEN)
pure    13759 root    3u  IPv4 37206750      0t0  TCP 192.168.1.10:d-fence (LISTEN)
pure    13760 root    3u  IPv4 37206750      0t0  TCP 192.168.1.10:d-fence (LISTEN)
pure    13761 root    3u  IPv4 37206750      0t0  TCP 192.168.1.10:d-fence (LISTEN)

猜你喜欢

转载自blog.csdn.net/qq_32783703/article/details/80298603