Make getting the environment from gnome-session more robust

readlink() on /proc/<pid>/exe can have results like:

 /usr/bin/gnome-keyring-daemon.#prelink#.5DFZsF (deleted)
 /usr/bin/gnome-session (deleted)

To find gnome-session in a more robust way, read /proc/<pid>/cmdline
instead.

https://bugzilla.gnome.org/show_bug.cgi?id=616706
This commit is contained in:
Owen W. Taylor 2010-04-24 09:41:03 -04:00
parent 3bd2f75866
commit c4406d4ace

View File

@ -37,10 +37,15 @@ def get_running_session_environs():
if not stat.st_uid == myuid:
continue
try:
exe = os.readlink(piddir + '/exe')
except OSError, e:
f = open(piddir + "/cmdline")
command = f.read()
f.close()
except IOError, e:
continue
if os.path.basename(exe) != 'gnome-session':
# /proc/cmdline is separated and terminated by NULs
command = command.split("\x00")[0]
command = os.path.basename(command)
if command != 'gnome-session':
continue
try:
f = open(os.path.join(piddir, 'environ'))