给定某个基本的系统级函数foo,我们定义一个有相同参数、只不过开头字母大写了的包装函数Foo。包装函数调用基本函数并检查错误。如果包装函数发现了错误,那么它就打印一条信息并终止进程。否则,它返回到调用者。注意,如果没有错误,包装函数的行为和基本函数完全一样。
(1) unix风格
像fork和wait这样的函数返回值既包括错误代码,也包括有用的结果
(2) posix风格
只用返回值来表明成功(0)或者失败(非0)。任何有用的结果都返回在通过引用传递进来的函数参数中。
(3) DNS风格
在失败时返回NULL指针,并设置全局变量h_errno。
将给出的文件拷贝到另一文件或目录中去。
主要用法:cp 【选项】【源文件或目录】【目标文件或目录】
运行结果(cp1.c):
显示文件列表
主要用法:ls 列出该目录下所有子目录和文件
ls –l 列出该目录下所有子目录和文件的详细信息
共有10个字母组成:第一个字符表示文件的类型。如:-表示该文件是一个普通文件
(1)文件硬链接数
如果一个文件不是目录,此时这一字段表示文件所具有的硬链接数。值为1说明这个文件只有一个文件名。即只有一个指向该链接的硬链接。
(2)链接占用的节点
如果是一个目录,则第二字段表示该目录所含子目录的个数。
该字段表示此文件是属于哪个用户。
一个用户可以加入很多个组,但是其中一个主组。
如果是一个文件夹,则表示的是该文件夹的大小,而不是该文件夹及它下面所有文件的总大小。
主要用法:who
第一列显示用户名称
第二列显示用户的连接方式。Tty表示用户直接连接到电脑上,pts表示远程登录
第三、四列显示日期和时间
第五列显示用户登录ip地址
Mode:protection and file type
Link:number of hard links
User:user id of owner
Group:group id of owner
Size:total size,in byte
Modtime:time of last modification
Name:filename
/bin | 存放系统的一些指令。bin为binary的简写主要放置一些系统的必备执行档例如:cat、cp、chmod df、dmesg、gzip、kill、ls、mkdir、more、mount、rm、su、tar等 |
/usr/bin | 存放在后期安装的一些软件的运行脚本。主要放置一些应用软体工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome、 gzip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb、wget等 |
/uer/local/bin | 大部分发行版把这个目录归为PATH ,在这个目录下放了什么可执行的程序,在系统任何地方都可以直接执行,不需要指定路径 |
这次实践内容遇到的难点主要是分析分析每句代码的作用。系统调用部分真的不好理解。
对于以前的知识还是掌握得太浅薄,很多代码运行出来以后不知道结果是什么意思,类似who,ls -l,fileinfo等,因此我根据所查找到的资料对运行结果进行了解释。
《深入理解计算机系统》
老师提供的代码
闫佳歆的博客中关于对cp.c,setecho.c,echostate.c文件的解读