【问题标题】:Cannot run an application from udev script无法从 udev 脚本运行应用程序
【发布时间】:2017-04-13 11:30:36
【问题描述】:

在我们的嵌入式系统中,我们已正确设置 udev 以运行位于 /etc/udev/scripts/mount.sh 中的脚本。这很好用。但是,我们无法从该脚本中成功运行应用程序。

这很奇怪。我们尝试在脚本中编写此应用程序调用,例如 test.sh。如果我们从 udev 脚本 (mount.sh) 调用 test.sh,则什么也没有发生。它只有在我们从 shell 调用 test.sh 时才有效。

有人知道这里有什么问题吗?

更新: test.sh 看起来像:

#!/bin/sh
/usr/local/app/appipc "[header]usb,add"

appipc 只是一个简单的 Qt 应用程序,它使用 QLocalSocket 按名称连接到本地服务器。如果我们在 shell 中运行这个脚本,它就可以工作。但不是来自 udev 脚本 (mount.sh)。

【问题讨论】:

  • 你能分享一下运行时脚本错误信息吗?它永远不会运行
  • 脚本在shell中运行良好,所以没有错误信息。你的意思是当它由 udev 脚本运行时?我不确定如何确定从那里产生的错误。
  • 你试过系统日志了吗?
  • 是的。我们尝试在 appipc 中使用 syslog。从 shell 运行我们可以看到 /var/log/messages 的输出消息,但是从 udev 脚本运行我们什么也看不到。我们怀疑是否有任何情况导致 appipc 无法从 udev 脚本运行?

标签: linux udev


【解决方案1】:

最后我们发现,如果我们从 udev 脚本运行 Qt 应用程序,Qt 库将无法正确加载。这就是为什么我们怀疑它永远不会运行。如果我们运行常规的 C 应用程序,一切正常!

这是我们的一种愚蠢和疏忽!我们应该提前考虑这一点。感谢大家的时间。

【讨论】:

  • 是否与编译 Qt 并开启/关闭 udev 支持有关?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多