"姓名:\n项目1,评分标准\n总分:150\n\n步骤1:\n\n如在最终程序或中间提交(my_shell1.c)中所见,程序处理命令行参数:\n\n 如果参数数量大于2,程序将向stderr写入"Usage: ..."\n\t 样式的错误信息,并以非零错误码退出。(5分)\n\n 只有一个参数(程序名称)时,程序调用交互函数。(5分)\n\n 有两个参数(程序名称和批处理文件名)时,程序以批处理模式运行,\n 并将批处理文件名作为参数传递。(5分)\n \n_XX / 15 \n\n步骤2:\n\n如在最终程序或中间提交(my_shell2.c)中所见,交互方法:\n\n 显示命令提示符("my_shell: "),接收完整的用户输入\n 存入一个字符串(字符数组)中,并再次显示命令提示符\n (5分)\n\n 当用户输入EOF序列时,程序终止运行,EOF序列为\n (Unix系统中的Ctrl-D)(5分)\n\n_XX / 10\n\n步骤3:\n\n如在最终程序或中间提交(my_shell3.c)中所见:\n\n____ 存在一个方法(例如parse),它接收包含用户输入的字符串\n\t\t和指向字符串的指针的向量(5分)\n\n____ 该方法(例如parse)由交互方法调用(5分)\n\n____ 该方法(例如parse)使用strtok方法解析用户输入中的每个单词,\n 并将它们放入向量中(可以从交互方法中访问)(15分)\n\n_XX_ / 25\n\n步骤4:\n\n如在最终程序或中间版本中所见(my_shell4.c),\n交互方法生成一个子进程来执行用户的命令,\n并在提示用户输入另一个命令之前等待子进程完成。\n\n____ 交互方法调用另一个用户定义的方法(例如execute),\n\t\t将由parse方法产生的参数数组传递给它(5分)\n\n____ 该方法(例如execute)创建一个子进程(5分)\n\n____ 该方法等待子进程完成(10分)\n\n____ 如果fork失败,该方法显示错误("*** ERROR: forking child \n\t\tprocess failed" )并以非零代码退出(5分)\n\n____ 子进程调用execvp执行用户命令(10分)\n\n____ 如果execvp失败,该方法显示错误("*** ERROR: exec \n\t\tfailed" )并以非零代码退出(5分)\n\n_XX_ / 40\n\n步骤5:\n\n如在最终程序或中间版本中所见(my_shell5.c),\n程序可以检测到已输入一个"内建"命令,并调用\n相关的函数(exit,my_cp,my_ls和my_chmod)。注意:不需要生成子进程;\n工作可以由现有的my_shell进程处理。\n\n____ 交互函数检测到已输入内建命令(5分)\n\n_XX_ / 5\n\n步骤6:\n\n如在最终程序中所见,程序实现了"内建"函数\n(exit,my_cp,my_ls和my_chmod):\n\n____ 如果用户输入"exit",程序退出(5分)\n\n____ my_cp input_file output_file\n\t\t调用指定的Unix系统调用来:\n\t\t* 如果提供了错误数量的参数,则报告错误\n\t\t* 如果无法打开input_file(不存在或缺少读取权限)则报告错误\n\t\t* 如果无法打开output_file(例如缺少写入权限)则报告错误\n\t\t* 读取/写入时报告错误\n\t\t* 创建的输出文件具有适当的权限\n\t\t* 输出文件与输入文件相同\n\n____ my_ls:行为类似于"ls -l"(但时间格式简化为视频中的格式)\n\t\t调用指定的Unix系统调用来:\n\t\t* 如果提供了错误数量的参数,则报告错误\n\t\t* 正确显示和格式化文件类型和权限\n\t\t* 正确显示和格式化链接计数\n\t\t* 正确显示和格式化用户名\n\t\t* 正确显示和格式化组名\n\t\t* 正确显示和格式化文件大小\n\t\t* 正确显示和格式化修改时间(参见视频!)\n\t\t* 正确显示和格式化文件名\n\n____ my_chmod octal_perms filename\n\t\t调用指定的Unix系统调用来:\n\t\t* 如果提供了错误数量的参数,则报告错误\n\t\t* 根据用户提供的权限字段设置文件的权限\n\n_XX_ / 35\n\n总体:\n\t\t* 代码清晰格式化和注释\n\t\t* 提交工作的Makefile / 不包含多余的文件\n\t\t* 所有代码编译无错误\n\n_XX_ / 20\n\n_XX_ / 150 <--- 总计\n\n\n额外学分选项(最多20分):\n\n+10 实现批处理模式(10分)\n+10 实现程序输出的重定向(10分)\n+10 实现并行命令的执行(10分)\n+10 实现将一个程序的输出导入到另一个程序的输入中(10分)

项目1评分标准:Shell 编程评估

原文地址: https://www.cveoy.top/t/topic/pJmt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录