2017-2018-1 20155338 加分项目——PWD的实现

项目要求

1 学习pwd命令
2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码
3 实现mypwd
4 测试mypwd

实现过程

首先通过man 命令了解了一下pwd的用法

试试pwd命令的用法:

代码实现:

需要用到readdir函数

可以用man 命令了解了一下readdir函数的用法。

代码如下:


#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <unistd.h>
#include<string.h>
ino_t get_inode(char* file);
void get_inode_name(ino_t i_node,char *file_name,int length);
void print_direct(ino_t i_node);
void main()
{
ino_t i_node; print_direct(get_inode("."));
printf("\n"); } void print_direct(ino_t i_node)
{
ino_t n_inode;
char *file_name[256];
if(get_inode("..")!=get_inode(".")){
chdir("..");
get_inode_name(i_node,file_name,256);
n_inode=get_inode(".");
print_direct(n_inode);
printf("/%s",file_name);
}
} void get_inode_name(ino_t i_node,char *file_name,int length)
{
DIR* dir_ptr;
struct dirent* direntp;
dir_ptr = opendir(".");
while((direntp = readdir(dir_ptr)) != NULL)
{
if(direntp->d_ino==i_node)
{
strncpy(file_name,direntp->d_name,length);
file_name[length-1]='\0';
closedir(dir_ptr);
} } } ino_t get_inode(char* file)
{
struct stat buf;
if(stat(file,&buf)!=-1)
{
return buf.st_ino;
}
else{
printf("failed to get inode");
}
}

运行结果为:

最新文章

  1. 《程序员的自我修养》读书笔记 - dllimport
  2. #查看Linux的版本信息
  3. 【读书笔记】iOS-Objective-C对C的扩展基础知识
  4. libev笔记
  5. 重新认识Intent
  6. ArcGIS多面体(multipatch)解析(一)
  7. linux搭建phantomjs+webdriver+testng+ant自动化工程
  8. 批量去除office超链接
  9. IOS开发-UI学习-UITextField的各种属性设置
  10. [转载]解决win10 VC++6.0 应用程序无法正常运行 0xc0000142
  11. jdk动态代理与cglib代理、spring aop代理实现原理
  12. 弹性布局--flex方向
  13. 理解jQuery的$.extend与$.fn.extend
  14. SpringBoot系列——i18n国际化
  15. linux下sort命令详解大全
  16. java 前台使用枚举方法(二)
  17. 小白python 安装
  18. MySQL存储过程--&gt;通过游标遍历和异常处理迁移数据到历史表
  19. 中式台球 规则 ( ChinaBilliards )
  20. 2-51单片机ESP8266学习-AT指令(开发板51单片机自动冷启动下载原理)

热门文章

  1. unity3d中的自定义模型的顶点法线和建模软件中的术语“软硬边”和立方体
  2. webpack的require是如何工作的?
  3. laravel session的几个特点
  4. Oracle EBS AP 已经完全付款的发票仍然可以选择并进行零金额的付款
  5. Oracle EBS 取总账期间
  6. 常用CSS技术收藏
  7. 编写带有点击特效的UIButton
  8. oracle 复制表结构 复制表数据 sql 语句
  9. php 开源项目汇总
  10. 一、动态网络编程的概念 二、Tomcat服务器搭建 三、Servlet组件介绍