add process title setting to activities

* they now will show up as Activity Name <id> in the process list
     truncated to 15 characters though
This commit is contained in:
John (J5) Palmieri 2007-06-27 17:12:32 -04:00
parent 381df08442
commit 9cdd9058da
2 changed files with 32 additions and 1 deletions

View File

@ -28,7 +28,8 @@ import tempfile
import gtk, gobject import gtk, gobject
import dbus import dbus
from sugar import util
from sugar.presence import presenceservice from sugar.presence import presenceservice
from sugar.activity.activityservice import ActivityService from sugar.activity.activityservice import ActivityService
from sugar.graphics import units from sugar.graphics import units
@ -199,6 +200,13 @@ class Activity(Window, gtk.Container):
""" """
Window.__init__(self) Window.__init__(self)
# process titles will only show 15 characters
# but they get truncated anyway so if more characters
# are supported in the future we will get a better view
# of the processes
proc_title = "%s <%s>" % (get_bundle_name(), handle.activity_id)
util.set_proc_title(proc_title)
self.connect('realize', self._realize_cb) self.connect('realize', self._realize_cb)
self.connect('delete-event', self._delete_event_cb) self.connect('delete-event', self._delete_event_cb)
@ -397,3 +405,4 @@ def get_bundle_path():
"""Return the bundle path for the current process' bundle """Return the bundle path for the current process' bundle
""" """
return os.environ['SUGAR_BUNDLE_PATH'] return os.environ['SUGAR_BUNDLE_PATH']

View File

@ -103,3 +103,25 @@ def write_service(name, bin, path):
fileobject = open(dest_filename, 'w') fileobject = open(dest_filename, 'w')
service_cp.write(fileobject) service_cp.write(fileobject)
fileobject.close() fileobject.close()
def set_proc_title(title):
"""Sets the process title so ps and top show more
descriptive names. This does not modify argv[0]
and only the first 15 characters will be shown.
title -- the title you wish to change the process
title to
Returns True on success. We don't raise exceptions
because if something goes wrong here it is not a big
deal as this is intended as a nice thing to have for
debugging
"""
try:
import ctypes
libc = ctypes.CDLL('libc.so.6')
libc.prctl(15, str(title), 0, 0, 0)
return True
except:
return False