2012-08-09 163 views
0

在C中,有可能有一个嵌套在另一个结构中的结构?我将如何访问内部结构的字段?就拿结构的kinfo_proc例如:嵌套结构的访问元素

struct kinfo_proc { 
  struct  extern_proc kp_proc;      /* proc structure */ 
  struct  eproc { 
    struct  proc *e_paddr;    /* address of proc */ 
    struct  session *e_sess;  /* session pointer */ 
    struct  _pcred e_pcred;   /* process credentials */ 
    struct  _ucred e_ucred;   /* current credentials */ 
    struct   vmspace e_vm;    /* address space */ 
    pid_t e_ppid;     /* parent process id */ 
    pid_t e_pgid;     /* process group id */ 
    short e_jobc;     /* job control counter */ 
    dev_t e_tdev;     /* controlling tty dev */ 
    pid_t e_tpgid;    /* tty process group id */ 
    struct  session *e_tsess; /* tty session pointer */ 
#define WMESGLEN  7 
    char  e_wmesg[WMESGLEN+1];  /* wchan message */ 
    segsz_t e_xsize;    /* text size */ 
    short e_xrssize;    /* text rss */ 
    short e_xccount;    /* text references */ 
    short e_xswrss; 
    int32_t e_flag; 
#define EPROC_CTTY  0x01  /* controlling tty vnode active */ 
#define EPROC_SLEADER 0x02  /* session leader */ 
#define COMAPT_MAXLOGNAME 12 
    char  e_login[COMAPT_MAXLOGNAME]; /* short setlogin() name */ 
#if CONFIG_LCTX 
    pid_t e_lcid; 
    int32_t e_spare[3]; 
#else 
    int32_t e_spare[4]; 
#endif 
  } kp_eproc; 
}; 

我怎么会去试图获得一个新做的kinfo_proc增加实例的e_ppid?

回答

4

您将创建类似:

struct kinfo_proc test1; 
test1.kp_eproc.e_ppid /// Access it like this. 
+0

我看到你的逻辑!我错过了struct关键字。傻我。但我认为“eproc”实际上应该是kp_eproc。当我这样做时,它就像一个魅力。谢谢! – 2012-08-09 20:05:24

+1

谢谢Rob。他已经相应地改变了它。 – 2012-08-09 20:06:54