这次实践内容是学习ls、who、echostate、filesize、fileinfo、spwd、testioctl等命令的具体实现功能的c代码
1.功能: 复制文件或目录
2.说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
3.将文件file1复制成文件file2(cp file1 file2)
4.fprintf
格式化输出到一个流/文件中
头文件 #include
函数原型 int fprintf(FILE stream,char format,[argument])
5.open
打开一个文件
头文件 #include<fcntl.h>
函数原型 int fd = open(char *name,int how)
6.write
将内存中的数据写入文件
头文件 #include<unistd.h>
7.create
创建/重写一个文件
头文件 #include<fcntl.h>
函数原型 int fd = creat(char *filename,mode_t mode)
8.read
将数据读到缓冲区
头文件 #include<unistd.h>
函数原型 ssize_t numread = read(int fd,void *buf,size_t qty)
9.close
关闭一个文件
头文件 #include<unistd.h>
函数原型 int result = close(int fd)
cp 复制(复制为ls3文件)
1.功能:列出目标目录中所有的子目录和文件。
2.示例:
1.列出/home文件夹下的所有文件和目录的详细资料
命令:ls -l -R /home
2.列出当前目录中所有以“t”开头的目录的详细内容
命令:ls -l t*
3.只列出文件下的子目录
列出 /opt/soft 文件下面的子目录
命令:ls -F /opt/soft |grep /$
列出 /opt/soft 文件下面的子目录详细情况
命令:ls -l /opt/soft | grep "^d"
4.列出目前工作目录下所有档案及目录;目录于名称后加"/", 可执行档于名称后加"*"
命令:ls -AF
5.计算当前目录下的文件数和目录数
命令:
ls -l * |grep "^-"|wc -l ---文件个数
ls -l * |grep "^d"|wc -l ---目录个数
6.列出当前目录下的所有文件(包括隐藏文件)的绝对路径, 对目录不做递归
命令:find $PWD -maxdepth 1 | xargs ls -ld
ls 用来显示文件的详细信息(用户名,群组名,大小,创建时间,读写执行权。ls.tar视频也有讲到)
1.实现原理是,通过查找记录登陆信息的文件来获取系统中登陆过用户的信息。
who 读取想要的信息到存储器中,再用标准输出函数打印到屏幕上,关闭文件
1.filesize st_size计算文件的字节数大小
2.fileinfo 显示文件信息
(1)用来实现显示文件信息,建立了一个stat数据结构。
(2)要先判断命令是否有操作数
spwd 列出当前目录
ioctl函数
ioctl 用于向设备发控制和配置命令 ,有些命令需要控制参数,这些数据是不能用read / write 读写的,称为Out-of-band数据。也就是说,read / write 读写的数据是in-band数据,是I/O操作的主体,而ioctl 命令传送的是控制信息,其中的数据是辅助的数据。
testioctl ioctl 命令传送的是控制信息,其中的数据是辅助的数据。
1.setecho
设置回显位的状态,命令行参数为y则开启,否则关闭。
1.标准输入的文件描述符为0.
2.使用tcgetattr()函数和termios结构体可获得标准输入的属性。
3.使用tcsetattr()函数和termios结构体可以将更改后的属性设置重新写回标准输入。
2.echostate
读取驱动设置并显示回显位的状态。
1.标准输入的文件描述符为0
2.使用tcgetattr()函数和termios结构体可以读取到设备的属性
3.回显位状态放置在termios.c_lflag中
echostate setecho
如:通过man查看who
解决:ioctl 命令传送的是控制信息,其中的数据是辅助的数据。
如:#include <sys/ioctl.h>
int ioctl(int fd, int request,..);
若出错则返回-1,若成功则返回其他值,返回值也是取决于request。(fd是某个设备的文件描述符。request 是ioctl 的命令,可变参数取决于request ,通常是一个指向变量或结构体的指针。)
《深入理解计算机系统》
ls.tar视频
http://www.cnblogs.com/peida/archive/2012/10/23/2734829.html
http://blog.163.com/postmessage%40126/blog/static/30614210201032343549335/
http://www.cnblogs.com/cation/archive/2013/03/06/2945464.html
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。