OSExperiment Exam

操作系统上机考试 NUAA 2018 Spring

题目及解答

OSExperiment Repo

操作系统实验 NUAA

文件读写编程题目

myecho.c

Source C File

$ ./myecho x
x
$ ./myecho a b c
a b c

mycat.c

Source C File

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...
$ ./mycat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...

mycp.c

Source C File

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...
$ ./mycp /etc/passwd passwd.bak
$ cat passwd.bak
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...

多进程题目

mysys.c: 实现函数mysys,用于执行一个系统命令,要求如下

Source C File

测试程序

#include <stdio.h>

int main()
{
    printf("--------------------------------------------------\n");
    system("echo HELLO WORLD");
    printf("--------------------------------------------------\n");
    system("ls /");
    printf("--------------------------------------------------\n");
    return 0;
}

测试程序的输出结果

--------------------------------------------------
HELLO WORLD
--------------------------------------------------
bin    core  home	     lib	 mnt   root  snap  tmp	vmlinuz
boot   dev   initrd.img      lost+found  opt   run   srv   usr	vmlinuz.old
cdrom  etc   initrd.img.old  media	 proc  sbin  sys   var
--------------------------------------------------

sh1.c: 实现shell程序,要求具备如下功能

Source C File

支持命令参数

$ echo arg1 arg2 arg3
$ ls /bin /usr/bin /home

实现内置命令cd、pwd、exit

$ cd /bin
$ pwd
/bin

sh2.c: 实现shell程序,要求在第1版的基础上,添加如下功能

Source C File

实现文件重定向

$ echo hello >log
$ cat log
hello

sh3.c: 实现shell程序,要求在第2版的基础上,添加如下功能

实现管道

$ cat /etc/passwd | wc -l

实现管道和文件重定向

$ cat input.txt
3
2
1
3
2
1
$ cat <input.txt | sort | uniq | cat >output.txt
$ cat output.txt
1
2
3

多线程题目

pi1.c: 使用2个线程根据莱布尼兹级数计算PI

Source C File

pi2.c: 使用N个线程根据莱布尼兹级数计算PI

Source C File

sort.c: 多线程排序

Source C File

pc1.c: 使用条件变量解决生产者、计算者、消费者问题

Source C File

pc2.c: 使用信号量解决生产者、计算者、消费者问题

Source C File

ring.c: 创建N个线程,它们构成一个环

Source C File

Copyright © 2018 TripleZ