실제로 리눅스에서는 두 가지가 필요합니다 : (for 및 friends) argv[0]
에서 수정 하고 플래그로 호출하십시오 .C
ps auxf
prctl
PR_SET_NAME
파이썬 자체에서 첫 번째 조각을 할 수있는 방법은 전혀 없습니다. 그러나 prctl을 호출하여 프로세스 이름을 변경할 수 있습니다.
def set_proc_name(newname):
from ctypes import cdll, byref, create_string_buffer
libc = cdll.LoadLibrary('libc.so.6')
buff = create_string_buffer(len(newname)+1)
buff.value = newname
libc.prctl(15, byref(buff), 0, 0, 0)
def get_proc_name():
from ctypes import cdll, byref, create_string_buffer
libc = cdll.LoadLibrary('libc.so.6')
buff = create_string_buffer(128)
libc.prctl(16, byref(buff), 0, 0, 0)
return buff.value
import sys
get_proc_name()
set_proc_name('testing yeah')
get_proc_name()
ps auxf
그 :( 후 바로 '파이썬'을 보여줄 것이다. 그러나 top
및 ps -A
프로세스 이름을 : '그래 테스트'새로운 표시됩니다. 또한 killall
및 pkill
새 이름으로 작동합니다.
btw, googlecode의 procname도 변경 argv[0]
되므로 ps auxf
출력 도 변경 됩니다.
업데이트 :이 답변에 게시 된 솔루션은 때때로 FreeBSD에서 잘 작동하지 않습니다. 나는 이제이 답변 에 명시된 py-setproctitle 을 다양한 Linux 및 freebsd 상자에서 1 년 정도 사용하고 있습니다. 지금까지 실패하지 않았습니다! 모두가해야합니다! :). PostgreSQL 이 기본 데이터베이스 및 하위 프로세스에서 사용 하는 것과 거의 동일한 코드를 사용 합니다.