20165202 Mypwd
实现mypwd(选做,加分)
- 1 学习pwd命令
- 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码
- 3 实现mypwd
- 4 测试mypwd
提交过程博客的链接
实现过程
- 使用man -k pwd查看pwd在man手册中的说明。手册里的介绍是:
pwd (1) - print name of current/working directory
pwd命令的作用是p(rint name of )w(orking) d(irectory),打印正在工作或者最近的文件夹名。具体的使用方法是直接在终端中输入pwd,然后在下方会打印出正在工作或者最近的文件名。
运行man -k pwd:

运行pwd:

- 使用man pwd查看pwd命令的具体说明发现pwd命令是属于1类命令,即应用命令不是之前的2类系统调用。如果要打印文件信息,采用c语言核心命令是stat()函数,文件的相关信息会记录在文件系统里,stat()函数的作用就是读取文件系统里的信息。
运行man pwd:

代码核心函数:
main函数:主函数
get_inode函数:取某个文件的索引信息(进入点)
printpathto函数:打印路径
inum_to_name函数:将长整型的索引信息转化为字符串的形式
通过以上的分析对pwd进行编写,其中参考了pwd的源代码。
我们在home主文件夹中创建了一个pwd文件夹,在里面放置了pwd.c的代码并进行了编译运行,显示的运行文件路径是
/home/linux/pwd,然后再使用使用Linux中的pwd查看当前运行文件路径也是/home/linux/pwd。
运行截图:

学习中遇到的问题
问题1:
Linux中如何获得文件信息?目前文件夹的信息的存在哪里?
解决1:
通过网上的资料得到了stat可以读取系统文件的信息,于是使用man -k stat查看stat的详细资料。这里存在应用和系统调用两个使用方法,可以在pwd中使用stat的系统调用来获得系统文件的信息,并打印出来。

参考资料
20165202 Mypwd的更多相关文章
- 2017-2018-1 20155205 实现mypwd
2017-2018-1 20155205 实现mypwd 课堂总结 根据上课对ls -l功能的实现,我总结了实现一个linux命令需要的步骤: 使用man -k xx | grep xx查看帮助文档, ...
- 20155227 实现mypwd
20155227 实现mypwd 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd 课堂学习笔记 实现mypwd 在 ...
- 2017-2018-1 20155306 mypwd的实现
2017-2018-1 20155306 mypwd的实现 一.pwd的使用 功能: Linux中用 pwd 命令来查看"当前工作目录"的完整路径. 命令格式:pwd [选项] 命 ...
- 实现mypwd
1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd 提交过程博客的链接 代码如图
- 2018-2019-1 20165231 实现mypwd(选做)
实现mypwd 要求: 学习pwd命令 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 实现mypwd 测试mypwd pwd: 在Linux层次结构中,想要知道当前所处的目录, ...
- 20165223 《信息安全系统设计基础》 实现mypwd
一.学习pwd命令 1. pwd命令简介 英文原名:Print Working Directory 指令功能:打印出当前工作目录 执行权限:All User 指令所在路径:/usr/bin/pwd 或 ...
- 2018-2019-1 20165234 实现mypwd
实现mypwd(选做,加分) 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 3 实现mypwd 4 测试mypwd 提交过程博客的链接
- 实现mypwd和mybash
一.pwd 1.学习pwd命令 man pwd查看pwd功能 可以得知pwd功能是打印当前目录 2.研究pwd实现需要的系统调用(man -k; grep),写出伪代码 (1)man -k direc ...
- 20155228 2017-11-19 实现mypwd(选做,加分)
20155228 2017-11-19 实现mypwd(选做,加分) 题目和要求 学习pwd命令 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 实现mypwd 测试mypwd ...
随机推荐
- C# SQLite数据库操作
WinCE项目开发 VS2008 自己写的SQLite数据库管理类代码如下: SQLiteManager.cs using System.Data; using System.Data.SQLit ...
- shell 浮点运算
浮点运算 let 和 expr 都无法进行浮点运算,但是 bc 和 awk 可以. 范例:求 除以 ,保留 位有效数字 $ echo "scale=3; 1/13" | bc . ...
- shell 去掉字符串的单引号
echo \'deded\' | sed $'s/\'//g'
- Linux 设置定时任务 清空日志
Step 1:前提是linux服务器安装了crond 定时任务需要crond服务的支持 1.启动方法 service crond restart 2.该服务默认是开机启动的 取消定时任务 1.全部取消 ...
- JS + flash 复制
js代码ZeroClipboard组件制作复制剪切板复制粘贴文字内容,一键即可复制粘贴文字内容.兼容各大主流浏览器firefox,,Chrome,IE等. 演示代码 如下: <script ty ...
- Qt5_qt.conf
本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息.原文链接.原 文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途. 谢谢合作. 原文链接:用qt.conf和qtconfig ...
- Flutter学习笔记(三)-- 事件交互和State管理
先来看看准备界面: image.png 目标是修改图中红色实线框中的喜欢和不喜欢的五角星的修改,以及数字的修改. 在修改之前,有必要先了解一些相关的信息. 知识点 前面简单的提到过,有些Widget是 ...
- 消息队列Kafka学习记录
Kafka其实只是众多消息队列中的一种,对于Kafka的具体释义我这里就不多说了,详见:http://baike.baidu.com/link?url=HWFYszYuMdP_lueFH5bmYnlm ...
- Zend Studio获取永久使用权
网上有很多破解方式,什么注册码之类的,但是经过本人尝试有一个很easy的方法,那就是不用破解,让我们永久性试用下去! 当我们打开软件试用的时候试用期都是30天,当使用快到期的时候我们 打开目录C:\U ...
- JDK1.7 新特性
1:switch中可以使用字串 String s = "test"; switch (s) { case "test" : System. ...