0

我们有一个在 Fedora 16 下运行的命令和控制守护程序,它提供各种服务,包括启动我们的一个辅助应用程序。这已经为我们工作了很长一段时间。

事实上,它仍然有效 - 在某些系统上。

守护进程分叉(成功),然后调用 execv()。

设置在另一个系统上测试,突然失败,execv()失败返回127。

两个系统都在运行 Fedora 16,虽然有问题的是 3.3.7-1.fc16.x86_64 而另一个一切正常的系统是运行 3.4.2-1.fc16.x86_64

如果我停止守护程序并将其作为独立应用程序运行,则整个过程运行良好。

所有在 execv() 和相关文档中的搜索都无法显示 127 错误代码,到目前为止我唯一的猜测是 Linux 'Command not found' 错误。不知道这意味着什么使解决问题变得困难。

谁能告诉我 127 返回码是什么意思?

谢谢!

4

1 回答 1

1

好的,问题又回来了,我发现我实际上已经解决了它,但是解决方案需要一些时间才能起作用。

动态链接器未找到似乎已在其他系统上获取的特定库(可能是因为该库是作为错误机器上缺少的某些硬件的驱动程序的一部分加载的)。

将它添加到 /etc/ld.so.conf.d/ 中的配置文件并没有立即帮助,但几个小时后,在几次重新启动后它确实有帮助。

所以: execv()没有启动应用程序,而是返回 127 作为未找到库的症状。

解决方案是将路径添加到/etc/ld.so.conf.d/中的适当文件

为了立即满意,运行ldconfig来重建缓存。

于 2012-09-07T23:06:39.057 回答