![](https://csdnimg.cn/release/download_crawler_static/88118241/bg4.jpg)
4.3.2
4
功或失败的提示。
4.1.4 显示输入内容
关键数据结构为字符型数组,用于存储用户除命令外输入的内容。 该命令无需
调用系统调用。关键算法是用户输入该命令后,将命令后的内 容除空格外依次输
出,最后输出换行即可。
4.1.5 使用帮助
在该函数中输出定义好的命令和相应使用帮助即可。
4.1.6 退出程序
输出用户提示,调用函数 exit() 退出程序即可。
4.1.7 设置和初始化系统环境变量
此处略,详见下文 4.4 系统环境变量支持中的说明。
4.2
采用直接调用的内部命令
4.2.1 文件拷贝
关键数据结构为三个字符型数组,用于存储需拷贝的文件的文件名和拷贝 文件
的文件名以及拷贝的部分文件内容。
该命令是直接调用相应的系统调用实现的方式。关键算法是用户输入该命 令以
及需拷贝的文件的文件名和拷贝文件的文件名后,使用 syscall() 函数和 系统调用
号 SYS_open,采用只读模式打开需要拷贝的文件,若打开失败输出相 应提示。使用
syscall() 函数和系统调用号 SYS_read,读取该文件的内容和字 节数量,若读取失
败输出相应提示。使用 syscall() 函数和系统调用号 SYS_creat,采用读写模式创
建拷贝的新文件,若创建失败输出相应提示。使用 syscall() 函数和系统调用号
SYS_write ,向新文件中写入读取的内容,若写入 失败输出相应提示。使用
syscall() 函数和系统调用号 SYS_close,分别关闭两 个文件,若关闭失败则分别
输出相应提示。若以上步骤均成功则最后输出相应 拷贝成功提示。
4.3
外部命令
4.3.1 显示环境变量
该命令是采用直接调用 exec 系统调用实现的方式。调用 fork() 函数生成 子
进程并返回 pid ,根据该值判断。如果出现错误, fork 返回一个负值,此时 打印
错误信息并返回;在子进程中, fork 返回 0,此时调用 execlp() 命令参数 为
“ env”, 即可显示所有的系统环境变量;在父进程中, fork 返回新创建子进 程
的进程 ID,需调用 wait() 函数等待。
该命令是采用直接调用 exec 系统调用实现的方式。调用 fork() 函数生成 子
进程并返回 pid ,根据该值判断。如果出现错误, fork 返回一个负值,此时 打印
错误信息并返回;在子进程中, fork 返回 0,此时调用 execlp() 命令参数 为
“ pstree -p ”, 即可以树状图显示一系列子进程;在父进程中, fork 返回新 创