为什么我的wnck.screen_get_default()在通过暴发户启动时会挂起或崩溃?

时间:2015-03-07 20:05:26

标签: python ubuntu upstart wnck

当我手动运行以下脚本时,一切正常。但是,当我通过Upstart通过shell脚本(以root身份启动脚本)启动它时,它成功进入wnck.screen_get_default()行并且永远不会超越它。 Upstart一遍又一遍地重新生成脚本(因为它一直在死亡)并且不会抛出任何异常。有什么想法吗?

import gtk
import wnck
import time

def cycle():
    try:
        print("ABOUT TO RUN screen_get_default!!")
        screen = wnck.screen_get_default()
        print("JUST RAN screen_get_default!!")
    except Exception as e:
        print(str(e))

print("STARTING APP!!")

while 1 == 1:
    cycle()
    time.sleep(1)

upstart脚本如下所示:

description "myapp"
start on runlevel [12345]
stop on runlevel [!12345]
respawn
exec /usr/lib/myapp/myapp.sh
post-stop exec sleep 10

编辑:我从upstart脚本运行了exec sudo python /usr/lib/myapp/myapp.py,现在我终于在日志文件中收到了一个有意义的错误,但我无法解读从这里开始的地方:

GtkWarning: IA__gdk_x11_display_get_xdisplay: assertion 'GDK_IS_DISPLAY (display)' failed
  screen = wnck.screen_get_default()
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
  warnings.warn(str(e), _gtk.Warning)

0 个答案:

没有答案