从远程过程调用返回字符串

时间:2014-04-29 18:50:47

标签: c file rpc

我正在使用Linux中的rpcgen,我需要在C中构建一个程序来读取远程计算机上的文件,然后将该文本发送回客户端计算机,以便显示它。

是否可以在my-prog.x中定义一个函数,该函数向客户端返回可变长度的字符数组?

2 个答案:

答案 0 :(得分:0)

在C中,string实际上是char*

char**可以是一个字符串数组。

答案 1 :(得分:0)

您可以从C函数返回一个字符串,包括以下内容:

     
  1. int function(char * string,size_t length);
  2. 此版本允许调用者提供自己的字符串缓冲区,其中将复制RPC字符串。但是,当调用者不知道字符串的实际大小时,这个版本有点尴尬;导致他们永远猜测他们提供的缓冲区足够长。此函数的返回'int'值可能会向调用者返回一个数字错误代码,以指示缓冲区太小等等。  
  3. int function(char ** string);
  4. 此版本允许函数为字符串分配合适大小的内存,然后将该内存的地址返回给调用者。当然,这将要求调用者在不再需要时释放(释放)内存。此函数的返回'int'值可能会向调用者返回一个数字错误代码,以指示它无法成功分配内存等.calller  
  5. char * function();
  6. 此版本允许函数分配内存,就像上面的[2.]中一样。不同之处在于它不通过参数返回分配的内存的地址。相反,它返回地址作为函数的值。此版本的错误报告受到限制,因为它可能会返回“NULL”以指示错误;如果可能发生许多错误情况,并且需要向调用者报告,这是很尴尬的。

    根据您的需要,可以使用其中任何一种。