20155308 加分项——C语言实现Linux的pwd命令

实现要求

学习pwd命令

什么是pwd

  • pwd‘ 代表的是‘Print Working Directory’(打印当前目录)。如它的名字那样,‘pwd’会打印出当前工作目录,或简单的来说就是当前用户所位于的目录。它会打印出以根目录 (/)为起点的完整目录名(绝对目录)。

基本语法

  • pwd [OPTION]

详细用法

  • 利用man pwd查看pwd的用法

常用实例

参考

http://www.cnblogs.com/peida/archive/2012/10/24/2737730.html

学习了pwd命令

  • 实例1:用pwd命令查看默认工作目录的完整路径

  • 实例2:使用 pwd 命令查看指定文件夹

  • 实例3:/bin/pwd

命令:/bin/pwd [选项]

选项:

-L 目录连接链接时,输出连接路径

-P 输出物理路径

输出:

[root@localhost init.d]# /bin/pwd 

/etc/rc.d/init.d

[root@localhost init.d]# /bin/pwd --help

[root@localhost init.d]# /bin/pwd -P

/etc/rc.d/init.d

[root@localhost init.d]# /bin/pwd -L

/etc/init.d

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

首先输入命令

man -k directory | grep 2

查看

发现getcwd()函数符合条件后,查看其用法

  • 伪代码为:
定义一个字符串数组储存绝对路径
调用函数getcwd()
if (返回的指针==NULL)
调用函数出错,发出错误报告
else
打印结果

代码实现

#include<stdio.h>
#include<sys/stat.h>
#include<dirent.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
void printpath();
char *inode_to_name(int);
int getinode(char *);
int main()
{
printpath();
putchar('\n');
return ;
}
void printpath()
{
int inode,up_inode;
char *str;
inode = getinode(".");
up_inode = getinode("..");
chdir("..");
str = inode_to_name(inode);
if(inode == up_inode) {
// printf("/%s",str);
return;
}
printpath();
printf("/%s",str);
}
int getinode(char *str)
{
struct stat st;
if(stat(str,&st) == -1){
perror(str);
exit(-1);
}
return st.st_ino;
}
char *inode_to_name(int inode)
{
char *str;
DIR *dirp;
struct dirent *dirt;
if((dirp = opendir(".")) == NULL){
perror(".");
exit(-1);
}
while((dirt = readdir(dirp)) != NULL)
{
if(dirt->d_ino == inode){
str = (char *)malloc(strlen(dirt->d_name)*sizeof(char));
strcpy(str,dirt->d_name);
return str;
}
}
perror(".");
exit(-1);

代码测试

实验感想

上课老师讲过了pwd的用法,下课我们用过这个学习,让我更好地明白了pwd的各种功能以及代码实现过程。

20155308 加分项——C语言实现Linux的pwd命令的更多相关文章

  1. 加分项——C语言实现Linux的pwd命令

    加分项--C语言实现Linux的pwd命令 实现要求 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd pwd pw ...

  2. 20155212 C语言实现linux下pwd命令的两种方法

    20155212 C语言实现linux下pwd命令的两种方法 学习pwd命令 通过man pwd命令查看 pwd [OPTION],一般不加参数 -P显示当前目录的物理路径 -L显示当前目录的连接路径 ...

  3. 玩转Linux之pwd命令

    玩转Linux之pwd命令 你有没有遇到过需要知道当前所在目录却无从得知?有没有想要复制出当前所在目录层次却不知如何下手?俗话说有困难找警察,想知道目录层次自然要找pwd了.那么问题来了: 什么是pw ...

  4. Linux的pwd命令详解

    在Linux层次结构中,用户可以在被授权的任意目录下利用mkdir命令创建新目录,也可以利用cd命令从一个目录转换到另一个目录.然而,没有提示符来告知用户目前处于哪一个目录中.想要知道当前所处的目录, ...

  5. # 2017-2018-1 20155224 加分项-实现mypwd

    2017-2018-1 20155224 加分项-实现mypwd 1. 学习pwd命令 pwd命令以绝对路径的方式显示用户当前工作目录.命令将当前目录的全路径名称(从根目录)写入标准输出.全部目录使用 ...

  6. 20155222 c语言实现pwd命令

    20155222 c语言实现linux的pwd命令 1.学习pwd命令在Linux层次结构中,用户可以在被授权的任意目录下利用mkdir命令创建新目录,也可以利用cd命令从一个目录转换到另一个目录.然 ...

  7. 20155322 2017-2018-1《信息安全系统设计》第九周 Linux命令:pwd命令学习与简单实现

    pwd命令学习 功能 Linux中用 pwd 命令来查看"当前工作目录"的完整路径. 格式 pwd [选项] 实例 用 pwd 命令查看默认工作目录的完整路径: 用 pwd 命令查 ...

  8. Linux中grep命令的12个实践例子

    grep是每个Linux发行版都预装的一个强有力的文件模式搜索工具.无论何种原因,如果你的系统没有预装它的话,你可以很容易的通过系统的包管理器来安装它(Debian/Ubuntu系中的apt-get和 ...

  9. 每天一个linux命令(3):pwd命令

    Linux中用 pwd 命令来查看”当前工作目录“的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置. ...

随机推荐

  1. host 'xx' is not allowed to connect to this MySql server

    update mysql.user set host = '%' where user = 'root'; FLUSH PRIVILEGES; select * from mysql.user;

  2. Windows环境下JDK的配置及多版本JDK切换的方法记录

    (这里记录了笔者了解的关于JDK环境配置的信息,以及针对系统上存在不同版本JDK时所尝试的解决方案.具体来说,是已安装 JDK 8 后,又安装了 JDK 9 时所遇到的问题和尝试的解决方法.这次记录以 ...

  3. angularJs的过滤器扩展及自定义过滤器

    一.过滤器扩展 1.过滤器的组合使用 <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta ...

  4. 【[SDOI2008]Sandy的卡片】

    被\(mhr\)的暴力干翻了 这道题做法还是非常好想的 先做一遍差分,在每个串的某尾插入一个特殊字符,再将所有的串拼接在一起 现在的问题就转化为找到一个最长的公共子串使得其出现了\(n\)次,但是在一 ...

  5. 4、RabbitMQ-消息应答与消息持久化

    消息应答( Message acknowledgment) 1. Message acknowledgment(消息应答) 执行任务可能需要几秒钟.你可能想知道如果其中一个消费者开始一项长期任务并且只 ...

  6. python执行linux和window的命令

    linux: python执行shell脚本常用的方法 import os val=os.system("shell语句")  >>> val=os.system ...

  7. Ubuntu安装MySQL/MariaDB

    安装MariaDB/MySQL MariaDB是MySQL的分支,与MySQL高度兼容,几乎所有的命令都一样.MariaDB是由前MySQL的开发人员离开Sun公司后开发的,目的是为了防止Oracle ...

  8. Eclipse设置working set管理项目

    由于项目太多,看起来复杂,不容易找到,所以想要按文件夹区分,所以用到workingset. working set是把你这个存储空间的项目在eclipse中进行分类,只是在视图基础上分类,项目还是只有 ...

  9. 用JavaScript中lodash编写双色球

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 图形剖析,当给 ul 设置padding=0, margin=0后 li前面的小黑点消失的现象原理!