我试着在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。
发布于 2020-04-06 15:37:54
未定义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);
}发布于 2020-04-08 15:18:09
是的,proc不是全局变量,所以用cpu正在运行的当前进程初始化它。
struct proc *proc = myproc();
return name_for_inode(p, n, proc->cwd);https://stackoverflow.com/questions/61043444
复制相似问题