1 学习pwd命令

  • Linux中用 pwd 命令来查看”当前工作目录“的完整路径。 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录。

    在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置。
  1. 命令格式:

    pwd [选项]

  2. 命令功能:

    查看”当前工作目录“的完整路径

3.常用参数:

  • 一般情况下不带任何参数
  • 如果目录是链接时:
    • 格式:pwd -P 显示出实际路径,而非使用连接(link)路径。
man pwd


2 研究pwd实现需要的系统调用(man -k;grep),写出伪代码

man -k pwd

man -k pwd|grep 1


3 实现mypwd

  • 代码如下所示:
#include<stdio.h>
#include<sys/stat.h>
#include<dirent.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#define BUFFER 10
#define BUFFERSIZE 50
int process(char str[][BUFFERSIZE],int h) ;
int get_name(int inode,char str[][BUFFERSIZE],int h) ;
int get_inode(char inode[]);
int main()
{
char path[BUFFER][BUFFERSIZE];
int h=0;
h = process(path,h);
// printf("h = %d",h);
int i2;
for(i2=h-2;i2>=0;i2--)
printf("/%s",path[i2]);
printf("\n");
return 0;
}
int process(char path[][BUFFERSIZE],int h)
{
int inode,father_inode;
inode = get_inode(".");
father_inode = get_inode("..");
chdir("..");
h = get_name(inode,path,h);
if(inode == father_inode) {
return h;
}
h = process(path,h);
return h;
}
int get_inode(char inode[])
{
struct stat buf;
stat(inode, &buf);
return buf.st_ino;
}
int get_name(int inode,char path[][BUFFERSIZE],int h)
{
DIR *dir;
struct dirent *dir2;
if((dir = opendir(".")) == NULL){
perror(".");
exit(-1);
}
while((dir2 = readdir(dir)) != NULL)
{
if(dir2->d_ino == inode)
{
strcpy(path[h],dir2->d_name);
break;
} }
h = h+1;
return h;
}

4 测试mypwd

2017-2018-1 20155215 第九周 加分项 PWD命令的实现的更多相关文章

  1. 2017-2018-1 20155338 《信息安全系统设计基础》第5周加分项Mybash的实现

    2017-2018-1 20155338 <信息安全系统设计基础>第5周加分项Mybash的实现 使用fork,exec,wait实现mybash 一.fork函数 定义和理解:fork( ...

  2. 2017-2018-1 20155339 第十一周加分项Linux下Mypwd的实现

    2017-2018-1 20155339 第十一周加分项Linux下Mypwd的实现 学习pwd命令 通过man命令查看pwd命令的功能 由图可知pwd命令的用途是显示工作目录的路径名称.pwd 命令 ...

  3. 学号 20175212 《Java程序设计》第九周学习总结

    学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...

  4. 20155306 2016-2017-2 《Java程序设计》第九周学习总结

    20155306 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1 JDBC入门 Java语言访问数据库的一种规范,是一套API ...

  5. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  6. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  7. 20145330第九周《Java学习笔记》

    20145330第九周<Java学习笔记> 第十六章 整合数据库 JDBC入门 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JD ...

  8. 20145211 《Java程序设计》第九周学习总结——垂死病中惊坐起

    教材学习内容总结 JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性 JDBC标准分为两个部分:J ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

随机推荐

  1. 利用scrapy模拟登录知乎

    闲来无事,写一个模拟登录知乎的小demo. 分析网页发现:登录需要的手机号,密码,_xsrf参数,验证码 实现思路: 1.获取验证码 2.获取_xsrf 参数 3.携带参数,请求登录 验证码url : ...

  2. Java序列化机制和原理及自己的理解

    Java序列化算法透析 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.Java序列化API提供一 ...

  3. 一个简单的freemark输入输出的案例(一)

    一. 创建FreeMarker模板文件user.ftl <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&qu ...

  4. 前端测试框架对比(js单元测试框架对比)

    前端测试框架对比(js单元测试框架对比) 本文主要目的在于横评业界主流的几款前端框架,顺带说下相关的一些内容. 测试分类 通常应用会有 单元测试(Unit tests) 和 功能测试(Function ...

  5. java查看程序执行时间

    public static void main(String[] args) { long a= System.currentTimeMillis();//获取当前系统时间(毫秒) for (int ...

  6. 吐血整理:人工智能PDF中文教材资源包2.73G基本包含全部学习资料-人工智能学习书单

    吐血整理:人工智能PDF中文教材资源包2.73G基本包含全部学习资料 人工智能学习书单(关注微信公众号:aibbtcom获取更多资源) 文末附百度网盘下载地址 人工神经网络与盲信号处理 人工神经网络与 ...

  7. js实现内容点击复制

    <!DOCTYPE html><html> <head> <script type="text/javascript"> funct ...

  8. 二、CSS

    css基本语法及页面引用 css基本语法 css的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个值 ...

  9. 从0开始整合SSM框架-1.mybatis

    1.建立maven项目 2.首先引入mybatis需要引入的依赖(1).数据库驱动(2).mybatis核心包 <!-- mysql数据库驱动--> <!-- https://mvn ...

  10. centos svn 服务器间的数据迁移

    svnadmin dump erp > ~/erp.svn   当前目录下的erp 导出到根目录下名为erp.svn tar -zcvf backupSvn.tar.gz backupSvn   ...