Update getcwd.md

master
p6a8nelzg 2 years ago
parent 63898ae9c5
commit b735ad06aa

@ -1,64 +1,64 @@
## getcwd
##### 1)思路分析
###### 获取当前目录的节点号
current_ino = get_ino_byname(".")
###### 获取当前节点的父目录的节点号
parent_ino = get_ino_byname("..") namei函数
###### 判断是否在根目录; **循环**直至根目录
if(current_ino == parent_ino)break;
###### 切换到父目录根据current_ino,搜索到对应的文件名并记录
chdir("..")
buf[depth] = find_name_byino(current_ino) //buf这可能会出问题
depth += len(find_name_byino(current_ino))
等break出来
###### 根据buf输出路径
##### 2现有问题
没有实现如何搜索到对应文件名记录
路径名传入没实现
## sleep
###### 1思路
在系统调用里分别调用
mysignal(SIGALRM,SIG_IGN);
alram(1)
pasue()
的系统调用函数通过改变alarm中的参数实现想睡多久就睡多久。
2问题
系统调用函数实现后,发现测试报错
显示错误:
-----testing sleep:
malloc called with impossibly large argument(334988)
Kernel panic: malloc: bad arg
最后解决方法是将原来直接跳过的系统调用号给补上,
加了个89的系统调用函数pipe2()
## getcwd
##### 1)思路分析
###### 获取当前目录的节点号
current_ino = get_ino_byname(".")
###### 获取当前节点的父目录的节点号
parent_ino = get_ino_byname("..") namei函数
###### 判断是否在根目录; **循环**直至根目录 这里有个循环回溯的过程
if(current_ino == parent_ino)break;
###### 切换到父目录根据current_ino,搜索到对应的文件名并记录
chdir("..")
buf[depth] = find_name_byino(current_ino) //buf这可能会出问题
depth += len(find_name_byino(current_ino))
等break出来
###### 根据buf输出路径
##### 2现有问题
没有实现如何搜索到对应文件名记录
路径名传入没实现
## sleep
###### 1思路
在系统调用里分别调用
mysignal(SIGALRM,SIG_IGN);
alram(1)
pasue()
的系统调用函数通过改变alarm中的参数实现想睡多久就睡多久。
2问题
系统调用函数实现后,发现测试报错
显示错误:
-----testing sleep:
malloc called with impossibly large argument(334988)
Kernel panic: malloc: bad arg
最后解决方法是将原来直接跳过的系统调用号给补上,
加了个89的系统调用函数pipe2()

Loading…
Cancel
Save