2017-2018-1 20155215 第九周 加分项 PWD命令的实现
1 学习pwd命令
- Linux中用 pwd 命令来查看”当前工作目录“的完整路径。 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录。
在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置。
命令格式:
pwd [选项]命令功能:
查看”当前工作目录“的完整路径
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命令的实现的更多相关文章
- 2017-2018-1 20155338 《信息安全系统设计基础》第5周加分项Mybash的实现
2017-2018-1 20155338 <信息安全系统设计基础>第5周加分项Mybash的实现 使用fork,exec,wait实现mybash 一.fork函数 定义和理解:fork( ...
- 2017-2018-1 20155339 第十一周加分项Linux下Mypwd的实现
2017-2018-1 20155339 第十一周加分项Linux下Mypwd的实现 学习pwd命令 通过man命令查看pwd命令的功能 由图可知pwd命令的用途是显示工作目录的路径名称.pwd 命令 ...
- 学号 20175212 《Java程序设计》第九周学习总结
学号 20175212 <Java程序设计>第九周学习总结 教材学习内容总结 一.MySQL数据库管理系统 1.在官网上下载并安装MySQL 2.在IDEA中输入测试代码Connectio ...
- 20155306 2016-2017-2 《Java程序设计》第九周学习总结
20155306 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 16.1 JDBC入门 Java语言访问数据库的一种规范,是一套API ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330第九周《Java学习笔记》
20145330第九周<Java学习笔记> 第十六章 整合数据库 JDBC入门 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JD ...
- 20145211 《Java程序设计》第九周学习总结——垂死病中惊坐起
教材学习内容总结 JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性 JDBC标准分为两个部分:J ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
随机推荐
- 利用scrapy模拟登录知乎
闲来无事,写一个模拟登录知乎的小demo. 分析网页发现:登录需要的手机号,密码,_xsrf参数,验证码 实现思路: 1.获取验证码 2.获取_xsrf 参数 3.携带参数,请求登录 验证码url : ...
- Java序列化机制和原理及自己的理解
Java序列化算法透析 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程.Java序列化API提供一 ...
- 一个简单的freemark输入输出的案例(一)
一. 创建FreeMarker模板文件user.ftl <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&qu ...
- 前端测试框架对比(js单元测试框架对比)
前端测试框架对比(js单元测试框架对比) 本文主要目的在于横评业界主流的几款前端框架,顺带说下相关的一些内容. 测试分类 通常应用会有 单元测试(Unit tests) 和 功能测试(Function ...
- java查看程序执行时间
public static void main(String[] args) { long a= System.currentTimeMillis();//获取当前系统时间(毫秒) for (int ...
- 吐血整理:人工智能PDF中文教材资源包2.73G基本包含全部学习资料-人工智能学习书单
吐血整理:人工智能PDF中文教材资源包2.73G基本包含全部学习资料 人工智能学习书单(关注微信公众号:aibbtcom获取更多资源) 文末附百度网盘下载地址 人工神经网络与盲信号处理 人工神经网络与 ...
- js实现内容点击复制
<!DOCTYPE html><html> <head> <script type="text/javascript"> funct ...
- 二、CSS
css基本语法及页面引用 css基本语法 css的定义方法是: 选择器 { 属性:值; 属性:值; 属性:值;} 选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个值 ...
- 从0开始整合SSM框架-1.mybatis
1.建立maven项目 2.首先引入mybatis需要引入的依赖(1).数据库驱动(2).mybatis核心包 <!-- mysql数据库驱动--> <!-- https://mvn ...
- centos svn 服务器间的数据迁移
svnadmin dump erp > ~/erp.svn 当前目录下的erp 导出到根目录下名为erp.svn tar -zcvf backupSvn.tar.gz backupSvn ...