0

Fedora 16で実行されているコマンドアンドコントロールデーモンがあり、補助アプリケーションの1つを起動するなど、さまざまなサービスを提供します。これはかなり長い間私たちのために働いてきました。

実際、それはまだ機能します-いくつかのシステムで。

デーモンプロセスは(正常に)フォークしてから、execv()を呼び出します。

テストするために別のシステムをセットアップすると、突然失敗し、execv()が失敗して127を返します。

どちらのシステムもFedora16を実行していますが、問題のあるシステムは3.3.7-1.fc16.x86_64ですが、すべてが正常に機能する別のシステムは3.4.2-1.fc16.x86_64を実行しています。

デーモンを停止してスタンドアロンアプリケーションとして実行すると、プロセス全体が正常に機能します。

execv()および関連するドキュメントを検索すると、127エラーコードが表示されません。これまでのところ、Linuxの「コマンドが見つかりません」エラーだけが推測されます。それが何を意味するのかわからないので、問題を解決するのが難しくなります。

誰かが127リターンコードの意味を教えてもらえますか?

ありがとう!

4

1 に答える 1

1

さて、問題が再発し、実際に解決したことがわかりましたが、解決には時間がかかりました。

他のシステムで取得されたと思われる特定のライブラリ(おそらく、ライブラリが誤ったマシンにないハードウェアのドライバーの一部としてロードされたため)がダイナミックリンカーによって検出されませんでした。

/etc/ld.so.conf.d/の設定ファイルに追加してもすぐには効果がありませんでしたが、数時間後、数回再起動すると効果がありました。

したがって、 execv()はアプリケーションを起動せず、代わりにライブラリが見つからないという症状として127を返しました。

解決策は、 / etc /ld.so.conf.d/内の適切なファイルへのパスを追加することでした。

すぐに満足するには、ldconfigを実行してキャッシュを再構築します。

于 2012-09-07T23:06:39.057 に答える