Linux下的守护进程无法使用execv启动应用程序

时间:2012-09-06 23:17:27

标签: linux daemon execv

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

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

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

设置另一个系统进行测试,我突然出现故障,execv()失败并返回127.

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

如果我停止守护进程并将其作为独立应用程序运行,整个过程都可以正常工作。

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

有人可以告诉我127返回代码的含义吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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

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

解决方案是将路径添加到 /etc/ld.so.conf.d /

中的相应文件中

要立即满意,请运行 ldconfig 以重建缓存。