C で書かれたプログラムがあり、RPC を使用して、同じ Linux サーバー上の別のプログラム (これも C で書かれています) と通信します (一部の実稼働セットアップでは、2 番目の C プログラムは別のマシンにあるため、IPC ではなく RPC になります)。
他の C プログラム、CRON、またはコマンド ラインから呼び出された場合、期待どおりに動作し、長年にわたって動作しているため、一般的に動作すると言っても過言ではありません。
Groovy スクリプトから呼び出された同じプログラムが、明らかにネットワークの問題で失敗します。
C プログラムでは、svc_register(xprt, prognum, versnum, dispatch, protocol)
成功しますが、
- リクエスト後の RPC サーバー:
clnttcp_create
「接続が拒否されました」で失敗する - 応答を待っている RPC クライアント:
select
on でsvc_fdset
失敗しますEBADF
Groovy プログラム (完全を期すために、ここではあまり説明しません):
[ "myprogram", "someoption", "someprogram" ].execute()
問題を特定して解決するには、どうすればよいでしょうか?