如何在linux RPC规范文件中表示linux内置结构?

如何在linux RPC规范文件中表示linux内置结构?,c,rpc,fuse,xdr,C,Rpc,Fuse,Xdr,我正在使用FUSE和Linux RPC库开发分布式文件系统。 阻碍我的问题是:对于某些函数,例如getattr(),我必须使用Linux内置结构,比如struct stat*statbuf,但我不知道如何在上述规范文件(.x文件)中表示它 如果我直接使用struct stat作为成员类型,则自动生成的文件会出现以下错误: /*Structure to hold the 2 values to be used in computation*/ struct getattr_struct {

我正在使用FUSE和Linux RPC库开发分布式文件系统。 阻碍我的问题是:对于某些函数,例如
getattr()
,我必须使用Linux内置结构,比如
struct stat*statbuf
,但我不知道如何在上述规范文件(.x文件)中表示它

如果我直接使用
struct stat
作为成员类型,则自动生成的文件会出现以下错误:

/*Structure to hold the 2 values to be used in computation*/
struct getattr_struct {
    char* path;
    /*struct stat *statbuf;*/
};

/*Programme, version and procedure definition*/
program COMPUTE{
    version COMPUTE_VERS{
        int BB_GETATTR(getattr_struct)=1;
    } =6;
} = 456123789;
fuse_rpc_xdr.c:15:86:错误:“xdr_stat”未声明(首次在此函数中使用);你是说“xprt_stat”吗?
*)&objp->statbuf,sizeof(结构状态),(xdrproc_t)xdr_状态)
^~~~~~~~
xprt_统计
fuse_rpc_xdr.c:15:86:注意:每个未声明的标识符对于它出现在其中的每个函数只报告一次
:目标“fuse\u rpc\u xdr.o”的配方失败
由于“struct stat”是一种复杂的数据类型,您需要定义相应的xdr_stat()例程。其方法如本协议第3条所述
bool_t
xdr_getattr_struct (XDR *xdrs, getattr_struct *objp)
{
        register int32_t *buf;

         if (!xdr_pointer (xdrs, (char **)&objp->path, sizeof (char), (xdrproc_t) xdr_char))
                 return FALSE;
         if (!xdr_pointer (xdrs, (char **)&objp->statbuf, sizeof (struct stat), (xdrproc_t) xdr_stat))
                 return FALSE;
        return TRUE;
}
fuse_rpc_xdr.c:15:86: error: ‘xdr_stat’ undeclared (first use in this function); did you mean ‘xprt_stat’?
 *)&objp->statbuf, sizeof (struct stat), (xdrproc_t) xdr_stat))
                                                     ^~~~~~~~
                                                                                      xprt_stat
fuse_rpc_xdr.c:15:86: note: each undeclared identifier is reported only once for each function it appears in
<builtin>: recipe for target 'fuse_rpc_xdr.o' failed