mit 6.s081 lab1 try

开始实验,懵逼进来,懵逼出去。

1.sleep程序

先看课程官网的要求。试图从XV6教材中吸取知识,看着看着就懵逼了。课程官网有一些提示,所以新建sleep.c。观察其他程序,包含有头文件、主函数。

//引入头文件
#include "kernel/types.h"
#include "kernel/stat.h"
#include "user/user.h"

//主函数
int
main(int argc, char *argv[]){}

这个主函数有两个参数,我的疑问是,这两个参数有什么用?查找资料(链接)后:

int argc //参数个数,包含命令名
比如:
$ sleep 10
argc=2。命令名+1个参数,共2个参数

char *argv[] //获取输入参数
$ sleep 10
意味着:argv[0]的值是sleep,argv[1]的值是10

 从user.h中可以找到sleep:

“Your sleep should pause for a user-specified number of ticks. ”

sleep函数只要1个int参数:用户输入的a user-specified number of ticks。

exit(0);//程序正常运行并退出
exit(1);//非正常运行导致退出

代码思路:

1.判断用户输入的参数个数是否合法

2.atoi函数将argv[1]的类型char转int

3.exit(0)退出

4.在 Makefile 中将sleep添加到 UPROGS

$U/_sleep\

push代码 

遇到的问题:push的时候没有文件显示。

解决:commit之后就有了

             

sleep.c文件名从黄色变为白色。代码有修改也需要commit。

push成功:在仓库找到sleep.c

打开实验环境

进入终端

#打开容器
docker start -i ubuntu

克隆仓库代码,但是出现冲突。

我希望把新增代码和原有的代码合并。所以选择如下方式:参考        

//进入原有代码目录
cd xv6_demo
//拉取远程仓库文件
git remote add origin <远程仓库地址>
git fetch origin
//远程仓库与本地文件合并
git merge origin/master

在  xv6_demo文件夹下进行 make qemu,会进行编译

输入测试用例。结果和官网上写的一样。

输入错误会输出提示信息。

测试结果

退出make qemu,在xv6_demo文件下,输入./grade-lab-util sleep

./grade-lab-util sleep

但是会报错

查了一下,输入以下内容修改文件权限

chmod 777 文件名
//文件名是   grade-lab-util

测试成功😇

To be continued

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值