Linux课程考查要求.docx
《Linux课程考查要求.docx》由会员分享,可在线阅读,更多相关《Linux课程考查要求.docx(16页珍藏版)》请在冰豆网上搜索。
Linux课程考查要求
Linux课程考查
一、要求:
1.在Linux环境下创建一个以自己学号作为用户名的用户账号,并切换到以自己学号为用户名的用户下(或者登录时选择自己学号的用户登录Linux),完成课程考查,即所有截图中要包含自己的学号用户;
2.Word文档文件名为:
学号.doc或学号.docx。
电子版提交到作业系统的“课程考查”中。
同时将电子版打印,打印文档加课程考查封面上课时上交。
(学号指自己的学号,如:
2130609100,用户创建参见讲议实验八中“手动添加用户”)
二、选题说明
请按照学号的最后一位选择对应的题目作为课程考查。
对应关系为:
学号最后一位为1选择题目1;
学号最后一位为2选择题目2;
学号最后一位为3选择题目3;
学号最后一位为4选择题目4;
学号最后一位为5选择题目5;
学号最后一位为6选择题目6;
学号最后一位为7选择题目7;
学号最后一位为8选择题目8;
学号最后一位为9选择题目9;
学号最后一位为0选择题目10;
注意千万不要弄错,否则理论课和实验课考查成绩为0分。
三、具体题目
题目1、给出如下C程序,文件名为yanghui.c,
1#include
2intmain()
3{inta[16][16];
4inti,j;
5for(i=1;i<16;i++)
6{a[i][1]=1;a[i][i]=1;}
7for(i=3;i<16;i++)
8for(j=2;j
9a[i][j]=a[i-1][j-1]+a[i-1][j];
10for(i==1;i<16;i++)
11{for(j=1;j<=i;j++)
12printf("%5d",a[i][j]);
13printf("\n");
14}
15}
该源程序中第10行有错,但不希望更改源程序。
请写出用gcc编译生成带调试信息的可执行程序yanghui的命令行,再使用gdb来调试它得到如下正确的结果?
写出具体的步骤(含各种命令行书写格式)。
1
11
121
1331
14641
15101051
……
11378286715128717161716128771528678131
11491364100120023003343230032002100136491141
考查材料的提交:
用Word文档记录实验过程(截图),包括C程序的编译、调试运行、查看实验结果(C程序、调试命令、调试时输出正确结果图)。
题目2、设计一个Shell程序,在/目录创建class2013,再在/class2013目录下建立50个目录,即21306091001~21306091050,并设置每个目录的权限,其中其他用户的权限为:
读;文件所有者的权限为:
读、写、执行;文件所有者所在组的权限为:
读、执行。
之后创建用户名为21306091001~21306091050的50个用户,每个用户的对应自己的用户主目录(如:
21306091001的用户对应的用户主目录为/class2013/21306091001)。
考查材料的提交:
用Word文档记录实验过程(截图),包括Shell程序的创建、运行、查看实验结果(Shell程序、目录结构、用户与目录对应关系)。
题目3、
1#include
2#include
3staticvoidmy_exit1(void);
4staticvoidmy_exit2(void);
5
6intmain(void)
7{
8if(atexit(my_exit2)!
=0)
9{
10printf("registermy_exit2failed\n");
11return-1;
12}
13
14if(atexit(my_exit1)!
=0)
15{
16printf("registermy_exit1failed\n");
17return-1;
18}
19
20printf("mainisdone\n");
21return0;
22}
23
24staticvoidmy_exit1(void)
25{
26printf("firstexithandler\n");
27}
28
29staticvoidmy_exit2(void)
30{
31printf("secondexithandler\n");
32}
考查材料的提交:
用Word文档记录实验过程(截图,如下图是用软件名为“截图”的软件截的图),包括Shell程序的创建、运行、查看实验结果(Shell程序、目录结构、用户与目录对应关系)。
题目4、建立一个mystatic的静态库,并运行查看结果。
static.h头文件
static1.c
static2.c
test_static.c
考查材料的提交:
用Word文档记录实验过程(截图),包括C程序的创建、运行、查看实验结果(C程序、运行结果),分析运行结果产生的原因。
题目5、给出如下C程序,文件名为ex_fork.c,请分析在Linux下程序运行的结果,并说明原因。
1#include
2#include
3#include
4#include
5intmain()
6{
7pid_tpid;
8char*message;
9intn=3;
10
11printf("forkprogramstarting\n");
12pid=fork();
13switch(pid)
14{
15case-1:
16perror("forkfailed");
17exit
(1);
18case0:
19message="Thisisthechild";
20n=4;
21break;
22default:
23message="Thisistheparent";
24n++;
25break;
26}
27
28for(;n>0;n--){
29puts(message);
30sleep
(1);
31}
32
33exit(0);
34}
考查材料的提交:
用Word文档记录实验过程(截图),包括C程序的创建、运行、查看实验结果(C程序、运行结果),分析运行结果产生的原因。
题目6、给出如下C程序,文件名为ex_vfork.c,请分析在Linux下程序运行的结果,并说明原因。
1#include
2#include
3#include
4#include
5intmain()
6{
7pid_tpid;
8char*message;
9intn=2;
10
11printf("forkprogramstarting\n");
12pid=vfork();
13switch(pid)
14{
15case-1:
16perror("forkfailed");
17exit
(1);
18case0:
19message="Thisisthechild";
20n=6;
21break;
22default:
23message="Thisistheparent";
24n++;
25break;
26}
27
28for(;n>0;n--){
29puts(message);
30sleep
(1);
31}
32
33exit(0);
34}
考查材料的提交:
用Word文档记录实验过程(截图),包括C程序的创建、运行、查看实验结果(C程序、运行结果),分析运行结果产生的原因。
题目7、运行程序,查看运行结果,并分析产生运行结果的原因。
1#include
2#include
3#include
4#include
5#include
6
7intmain()
8{
9pid_tpid;
10char*message;
11intn=2;
12intexit_code;
13
14printf("forkprogramstarting\n");
15pid=fork();
16
17switch(pid)
18{
19case-1:
20perror("forkfailed");
21exit
(1);
22case0:
23message="Thisisthechild";
24n=5;
25exit_code=37;
26break;
27default:
28message="Thisistheparent";
29n++;
30exit_code=0;
31break;
32}
33
34for(;n>0;n--)
35{
36puts(message);
37sleep
(1);
38}
39
40if(pid!
=0)
41{
42intstat_val;
43pid_tchild_pid;
44
45child_pid=wait(&stat_val);
46
47printf("Childhasfinished:
PID=%d\n",child_pid);
48if(WIFEXITED(stat_val))
49printf("Childexitedwithcode%d\n",WEXITSTATUS(stat_val));
50else
51printf("Childterminatedabnormally\n");
52}
53
54exit(exit_code);
55}
考查材料的提交:
用Word文档记录实验过程(截图),包括C程序的创建、运行、查看实验结果(C程序、运行结果),分析运行结果产生的原因。
题目8、SIGINT信号处理,运行程序,查看运行结果,并分析产生运行结果的原因。
1#include
2#include
3#include
4#include
5#include
6
7intmain()
8{
9pid_tpid;
10char*message;
11intn=2;
12
13printf("forkprogramstarting\n");
14pid=fork();
15
16switch(pid)
17{
18case-1:
19perror("forkfailed");
20exit
(1);
21case0:
22message="Thisisthechild";
23n=5;
24break;
25default:
26message="Thisistheparent";
27n++;
28break;
29}
30
31for(;n>0;n--)
32{
33puts(message);
34sleep
(1);
35}
36
37if(pid!
=0)
38{
39kill(pid,SIGINT);
40}
41
42return0;
43}
考查材料的提交:
用Word文档记录实验过程(截图),包括C程序的创建、运行、查看实验结果(C程序、运行结果),分析运行结果产生的原因。
题目9、SIGALRM信号处理,运行程序,查看运行结果,并分析产生运行结果的原因。
1#include
2#include
3#include
4#include
5
6staticvoidonTimer(intsig)
7{
8printf("Thetimeristimeout.\n");
9}
10
11staticunsignedintmysleep(unsignedintseconds)
12{
13if(signal(SIGALRM,onTimer)==SIG_ERR)
14{
15printf("Failtocallsignal()\n");
16returnseconds;
17}
18
19alarm(seconds);
20pause();
21
22returnalarm(0);
23}
24
25intmain()
26{
27printf("Begin...\n");
28mysleep(10);
29printf("End...\n");
30
31return0;
32}
考查材料的提交:
用Word文档记录实验过程(截图),包括C程序的创建、运行、查看实验结果(C程序、运行结果),分析运行结果产生的原因。
题目10、Kill对sigaction信号处理,运行程序,按下Ctrl+C组合键,之后按Ctrl+\组合键,查看运行结果,并分析产生运行结果的原因。
1#include
2#include
3#include
4
5voidgotit(intsig)/*定义信号回调函数*/
6{
7printf("signal%discaptured.\n",sig);
8
9sleep(20);/*睡眠20秒*/
10}
11
12intmain()
13{
14structsigactionact;
15
16act.sa_handler=gotit;
17sigemptyset(&act.sa_mask);
18sigaddset(&act.sa_mask,SIGQUIT);/*在信号回调函数中屏蔽SIGQUIT员*/
19act.sa_flags=0;
20
21sigaction(SIGINT,&act,0);/*设置SIGINT信号的回调函数*/
22while
(1){
23printf("HelloWorld!
\n");
24sleep
(1);
25}
26}
考查材料的提交:
用Word文档记录实验过程(截图),包括C程序的创建、运行、查看实验结果(C程序、运行结果),分析运行结果产生的原因。