zoukankan      html  css  js  c++  java
  • 20135337——信息安全设计基础第九周学习笔记

    这次实践内容是学习ls、who、echostate、filesize、fileinfo、spwd、testioctl等命令的具体实现功能的c代码

    cp

    1.功能: 复制文件或目录

    2.说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息

    3.将文件file1复制成文件file2(cp file1 file2)

    4.fprintf

    格式化输出到一个流/文件中

    头文件 #include<stdio.h>

    函数原型  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文件)

    ls

    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视频也有讲到)

    who

    1.实现原理是,通过查找记录登陆信息的文件来获取系统中登陆过用户的信息。

    who 读取想要的信息到存储器中,再用标准输出函数打印到屏幕上,关闭文件

    file

    1.filesize  st_size计算文件的字节数大小

    2.fileinfo 显示文件信息

     (1)用来实现显示文件信息,建立了一个stat数据结构。

     (2)要先判断命令是否有操作数

     

    spwd

    spwd 列出当前目录

    testioctl

    ioctl函数

    ioctl 用于向设备发控制和配置命令 ,有些命令需要控制参数,这些数据是不能用read / write 读写的,称为Out-of-band数据。也就是说,read / write 读写的数据是in-band数据,是I/O操作的主体,而ioctl 命令传送的是控制信息,其中的数据是辅助的数据。
    

    testioctl ioctl 命令传送的是控制信息,其中的数据是辅助的数据。

    echostate setecho

    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 -k

    如:通过man查看who

    遇到问题

    1.实践代码中cp1.c是把一个文件复制到另一个文件中。但是我开始复制到了文件夹下则出现了问题.

    2.setecho当yes时,为正常;当no时,命令行显示不出我所敲的内容,才明白当echo is on的时候,输入的指令不可见,echo也被设置为了关闭状态。当我要继续执行其他文件时,必须再次设置成yes的状态,将会再次显示输入指令内容。

    3.通过运行testioctl的结果,我以为是用于计算行列数,但,不是。

    解决: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

  • 相关阅读:
    php 采集程序
    15个实用的PHP正则表达式
    jQuery Mobile优秀网站及资源汇总
    连接ORalce数据库
    Windows Mobile如何观看Webcast
    解决wpf中使用WinformsHost显示滚动条的问题
    利用反射调用类及其属性和方法
    一些实用的vs.net2008 快捷键(已验证)
    WW插件研究
    微软今天公布了下一代Visual Studio和.NET Framework开发工具和平台,该平台将被命名的Visual Studio 2010和.Net Framework 4.0.
  • 原文地址:https://www.cnblogs.com/zzzz5/p/4960647.html
Copyright © 2011-2022 走看看