• 11
  • Aug

Python写的软件有一个特点,那就是进程名都是以Python命名的。

一些情况下用“系统监视器”查看进程,想结束某个Python软件的进程,一进去傻眼了,那么多Python,结束哪个呢?要不是看图标,还真找不出我要的进程。

这种情况在Linux下很常见,就我来说吧,随系统一起开启的软件当中,Gajim是Python写的,Emesene是Python写的,Gmail-Notify是Python写的,Screenlets是Python写的。对了,Ubuntu Tweak也是Python写的。

能不能把进程名改改呢?

今天看了wine-doors的源码,终于知道了如何操作当前进程了。

-----

Python中有个for Unix的dl模块,专门用于调用共享库(即.so结尾)的方法,在Windows下,应该也有调用dll文件的模块的。

比如上面提到的,要改变当前进程的进程名,就要调用到glibc中的prctl函数,用法如下:

try:
    import dl

    libc = dl.open('/lib/libc.so.6')
    libc.call('prctl', 15, 'ubuntu-tweak', 0, 0, 0)
except:
    pass

call的时候用到了很多参数,这些参数就要参考prctl这个函数了。

加了这句话后,效果就不一样了,看下面两张图:

Tags: Python.

» You can leave a comment.

7 Comments

  1. 解决了我一直以来的一大难题。。

  2. @xiws
    嗯?你也想把进程名改掉吗?

  3. 这个有用处,上次我自己写的 meizu 专用 mencoder 外壳挂了,想要结束,结果误杀了另一边正在分析 xml 的程序(python,还是自作)。

  4. 为啥贴到这里就没有缩进了呢?

  5. @fayaa

    这是WP的原因,我粘贴到Django搭的tiny_mce却没事,WP喜欢吃空格。

  6. 是啊。经常发现万多个python。。不知道如何下手。。
    然后闭眼一结束。。其他程序就被kill了。。

Leave a Comment