【发布时间】:2011-04-04 20:19:32
【问题描述】:
我们有一个用 C 编写的程序,它使用 RPC 与同一 Linux 服务器上的另一个程序(也用 C 编写)进行通信(在某些生产设置中,第二个 C 程序将在另一台机器上,因此 RPC 而不是IPC)。
当从其他 C 程序、CRON 或命令行调用时,它按预期工作,并且已经这样做了很多年,所以可以肯定地说它通常工作。
从 Groovy 脚本调用的同一程序失败,显然是网络问题。
在C程序中,svc_register(xprt, prognum, versnum, dispatch, protocol)成功了,但是之后
- 请求后在 RPC 服务器上:
clnttcp_create失败并显示“连接被拒绝” - 在等待回复的 RPC 客户端上:
selectonsvc_fdset失败并显示EBADF
Groovy 程序(只是为了完整,这里不多见):
[ "myprogram", "someoption", "someprogram" ].execute()
我们可以尝试找出并解决问题?
【问题讨论】: