【问题标题】:XV6: pwd implementationXV6:密码实现
【发布时间】:2020-04-05 13:35:15
【问题描述】:

我试图在 xv6 系统中实现 pwd 命令。但我在 sysfile.c 执行中遇到错误。函数显示错误如下:-

int sys_getcwd(void) {
    char *p;
    int n;
    if(argint(1, &n) < 0 || argptr(0, &p, n) < 0)
       return -1;
    return name_for_inode(p, n, proc->cwd);
}

我得到如下错误:

error: ‘proc’ undeclared (first use in this function)
return name_for_inode(p, n, proc->cwd);

但我也在这个文件中包含了 proc.h。

【问题讨论】:

  • 请不要发布错误跟踪的图像。相反,请编辑您的问题并发布有问题的函数的代码 (sys_getcwd)。另见How to Ask

标签: xv6


【解决方案1】:

proc 未定义,警告,这是一个struct 名称。

要查询当前进程,可以用myproc()函数完成

int sys_getcwd(void) {
    char *p;
    int n;
    struct proc *curproc = myproc();

    if(argint(1, &n) < 0 || argptr(0, &p, n) < 0)
       return -1;

    return name_for_inode(p, n, curproc->cwd);
}

【讨论】:

  • @MSD 如果这个或任何答案已经解决了您的问题,请通过单击复选标记考虑accepting。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
【解决方案2】:

是的 proc 不是全局变量,所以用 cpu 正在运行的当前进程对其进行初始化。

struct proc *proc = myproc();
return name_for_inode(p, n, proc->cwd);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2020-11-22
    相关资源
    最近更新 更多