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

@ -29,6 +29,7 @@ import tempfile
import gtk, gobject
import dbus
from sugar import util
from sugar.presence import presenceservice
from sugar.activity.activityservice import ActivityService
from sugar.graphics import units
@ -199,6 +200,13 @@ class Activity(Window, gtk.Container):
"""
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('delete-event', self._delete_event_cb)
@ -397,3 +405,4 @@ def get_bundle_path():
"""Return the bundle path for the current process' bundle
"""
return os.environ['SUGAR_BUNDLE_PATH']

View File

@ -103,3 +103,25 @@ def write_service(name, bin, path):
fileobject = open(dest_filename, 'w')
service_cp.write(fileobject)
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