程序在rc.d脚本启动后终止(Arch Linux)

时间:2010-12-26 19:58:50

标签: c++ linux archlinux

嘿伙计们, 我已经编写了一个程序作为我的MacBook Pro的键盘背光控制器,它运行Arch,就像在OS X中本身一样。程序本身效果很好,但是我提供的Arch程序包的rc.d脚本,没有似乎没有正确地打开程序...或者我认为。

可以找到Arch包的源here(rc.d脚本和PKGBUILD文件)。我已将“mbpkbdbacklightctl”添加到我的/etc/rc.conf中的守护进程中。

发生的事情是,在启动时,我看到rc.d脚本启动程序启动没有错误,键盘上的背光点亮,这意味着程序也正常运行,但是当gdm运行时开始登录gnome,该程序似乎已经终止。我没有找到任何错误记录,但如果没有在20秒或更长时间内注册键盘或鼠标事件,程序将关闭背光,并在注册时重新打开,这不会发生在gdm上,也不会发生在侏儒。此外,当我到达gnome并执行pidof -o %PPID /usr/bin/mbpkbdbacklightctl时,它不返回任何表示程序已终止的内容。当gnome启动时,我必须重新启动rc.d脚本才能使事情正常运行。

我似乎无法掌握程序自终止后会发生什么。 可以找到程序的源代码here,但我相信错误发生在rc.d脚本中,并且它可能无法正常启动程序,因为它可以通过gdm启动来“生存”。 / p>

对可能发生的事情的任何想法?

此致 Chris Buchholz

1 个答案:

答案 0 :(得分:5)

如果您阅读了mbpkbdbacklightctl.cpp的源代码,您会看到以下这些内容:

95  std::string the_display = ":0.0";
96  Display *x11_display = XOpenDisplay(the_display.c_str());
97  if(x11_display != NULL) {

如果没有活动的X服务器,它将失败,这意味着您必须在 X会话启动后启动此脚本。所以你必须把你的脚本放在/etc/X11/xinit/xinitrc.d