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)