sleep(esay)
根据提示查看user/echo.c的写法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20//echo.c
#include "kernel/types.h"
#include "kernel/stat.h"
#include "user/user.h"
int
main(int argc, char *argv[])
{
int i;
for(i = 1; i < argc; i++){
write(1, argv[i], strlen(argv[i]));
if(i + 1 < argc){
write(1, " ", 1);
} else {
write(1, "\n", 1);
}
}
exit(0);
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24//rm.c
#include "kernel/types.h"
#include "kernel/stat.h"
#include "user/user.h"
int
main(int argc, char *argv[])
{
int i;
if(argc < 2){
fprintf(2, "Usage: rm files...\n");
exit(1);
}
for(i = 1; i < argc; i++){
if(unlink(argv[i]) < 0){
fprintf(2, "rm: %s failed to delete\n", argv[i]);
break;
}
}
exit(0);
}编写sleep.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#include "kernel/types.h"
#include "kernel/stat.h"
#include "user/user.h"
int main(int argc,char *argv[])
{
if(argc==1)
{
write(1,"error:missing argument\n",24);
exit(1);
}
int n = atoi(argv[1]);
sleep(n);
exit(0);
}在Makefile中添加sleep.c
运行测试
输入sleep 10会等待一会才出现命令提示符,忘记输入参数会报错。提交
提交发现三个测试点全部通过。
pingpong(esay)
1 |
|
主要是进程间通过管道通信。
提交结果:
primes (moderate)/(hard)
类似于素数筛的程序,不过下面的程序一直会停在第二层。
1 |
|
正确做法:
1 |
|
提交结果
find (moderate)
1 |
|
两个结构体分别定义在kernel/stat.h
和kernel/fs.h
中
1 |
|
memmove()和memcpy()功能一样,区别在于memcpy()会一个一个复制,而memmove()会先将数据复制到中间缓冲区,然后再从缓冲区复制到目的地。
提交结果: