我遵循了创建RPC客户端和服务器here的简单示例。基本上,步骤是:
这应该在第一个终端打印一些内容,但在我的情况下它似乎不打印任何东西。我正在使用ssh在学校服务器上运行代码。也许我应该指定端口,即127.0.0.1?无论如何,我不确定这是否能解决问题。有什么想法吗?
add.x的代码是:
struct numbers {
int num1;
int num2;
};
program ADDITION {
version ADDITION_1 {
int ADD(numbers)=1;
} = 1;
} = 0x2fffffff;
所有其他文件都是由来自add.x的rpcgen生成的
add_server.c中的printf()添加为:
/*
* This is sample code generated by rpcgen.
* These are only templates and you can use them
* as a guideline for developing your own functions.
*/
#include "add.h"
int *
add_1_svc(numbers *argp, struct svc_req *rqstp)
{
static int result;
/*
* insert server code here
*/
printf("Got the client request!");
return(&result);
}
答案 0 :(得分:1)
哦! RPC服务器正在缓冲其输出。我通过挖掘add_svc.c
代码添加调试语句找到了它。 在远程调用的呼叫之后打印的东西修复了它。
这是一个糟糕的解决方案,因为该代码是自动生成的。
相反,你有两个选择。
printf()
调用后,使用fflush(stdout);
\n
)添加到输出字符串的末尾。要么工作正常。
有关此背后的原因,请参阅this question。