Linux阶段复习题
前天晚上考的Linux阶段性复习题,考的有些个烂,被老师提出去训了一顿,确实还是基础不行啊,今天把这个题拿出来与大家分享一下,希望对大家有帮助,都会附有答案和讲解,也说明了Linux中,基础很重要,我比较注重实操代码,后面的代码题,都还是没问题的,就是前面的理论有些个烂,加油,兄弟们!
第一阶段复习考试题(问答题)每题3分
1、简述如下目录的功能(这些是重要的,必须掌握的,其他的目录作为了解就好)
/boot 开机引导目录
/etc 配置文件目录
/lib 存放库文件
/bin 普通用户可执行的指令
/home 普通用户的家目录
/root 管理员的家目录
2 写出15个熟悉的linux 命令,并说明其功能
答: 文件:cp rm mv cat less more tail head vi/vim find grep touch mkdir
进程**:ps kill top jobs**
打包:tar gzip
3 linux 系统都有哪些类型的文件?每种类型用什么符号标识?
答:标识符号怎么查看呢 在Linux终端输入ls -l
在权限rwx这些前面的那个就是标识
普通文件 -(-是普通文件的标识)
目录文件 d
管道文件 p
链接文件 l
设备文件 c,b
套接字 s
4 文件有哪些基本权限,分别对用的数值是多少?
答:`
**r权限对应的数值为4
w权限对应的数值为2
x权限对应的数值为1
-(减号是无权限)对应的数值为0**
5 将一个名为file 的文件权限改成属主具有读写执行,同组人具有读写权限,其他人没有任何权限,写出命令:
答:chomd 760 file
该命令就是将属主权限改为读写执行
同组人改为读写
其他人无权限
当然也可以换种方式写 就是比较麻烦:
chomd u = r+w+x file
chomd g = r+w file
6 将main.c 生成对应的可执行程序main, 中间一共经过几个步骤,分别是什么?并给出对应的gcc 编译命令。
答:四个步骤 预编译 编译 汇编 链接
gcc -E main.c -o main.i;
gcc -S main.i -o main.s;
gcc -c main.s -o main.o
gcc -o main main.o
与上面的四个步骤分别对应起来就行
7 有三个文件 main.c ,add.c max.c 部分内容如下,请给出编译命令:
main.c如下
#include <stdio.h>
int add( int x, int y);
int max( int x, int y);
int main()
{int a = 2;int b = 3;printf("a+b=%d\n",add(a+b));printf("max=%d\n",max(a,b));
}
add.c 如下:
int add(int x, int y)
{return x + y;
}
max.c 如下:
int max( int x, int y)
{return x > y? x : y;
}
答:一步完成编译的命令为:
gcc -o main main.c add.c max.c
8 请写出makefile完成对第7题的自动编译。
答:这块就是写出mkfile的方法
all:mainmain:main.o add.o max.ogcc -o main main.o add.o max.omain.o:main.cgcc -c main.cadd.o:add.cgcc -c add.cmax.o:max.cgcc -c max.cclean:rm -rf*.o main //销毁.o文件的的
9 调试使用什么工具?常用的调试命令有哪些?
答:gdb命令调试命令
显示代码l
单步执行n
设置断点b
程序执行r
进入函数s
开始调试的命令:
gcc -o main main.c add.c max.c -g
gdb main
10 什么是库?请简述共享库和静态库的区别.
答:库是预先编译好的函数(方法)的集合;
静态库:在程序编译时会被链接到目标代码中,程序运行时将不再需要该静态库。
动态库:在程序编译时并不会被链接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在
11 如第7题代码,请将add.c 和max.c 中的方法生成到静态库libfoo.a中,写出生成库的命令:
答: 这个将add.c和max.c的方法生成到静态库中,首先得将add.c和max.c汇编成add.o和max.o
gcc -c add.c
gcc -c max.c
//然后对这两.o文件整合到静态库中
ar crv libfoo.a add.o max.o //这行命令就是整合add.o和max.o的
12 如第7题代码,请将add.c 和max.c 中的方法生成到共享库libfoo.so中,写出生成库的命令
答:同样的,先将add.c和max.o汇编为.o文件 然后进行整合
gcc -c add.c
gcc -c max.c
//然后对这两.o文件整合到共享库中
gcc -shared fPIC -o libfoo.so add.o max.o //共享库生成命令
13 查看可执行程序用到哪些共享库使用那个命令?
答:ldd main //这块就是ldd加可执行程序进行查看使用了共享库的命令
14 什么是进程?进程有那些基本状态?
答:程序执行起来叫进程
基本状态:就绪 执行 阻塞
15 程序与进程有什么区别?
答:程序执行起来叫进程 进程是程序执行的过程
16 linux系统中主函数有哪些参数,,写出主函数的完整形式,并说明各个形参的意义分别是什么?
答 :
int main(int argc,char* argv[],char* envp[]) //分别对应参数个数,参数内容,环境变量
17 库函数和系统调用有什么区别?
答:系统调用是直接调用内核效率高 库函数则是到指定或默认的目录下去找寻该函数的定义效率低于系统调用
18 ipc机制有哪些?
答:管道通信 共享内存 信号量 消息队列
19 有名管道和无名管道的区别?
答:有名管道就是任意两进程间都可以用来通信 无名管道只能在fork()之后的父子进程之间通信
20 什么是僵死进程?如何处理僵死进程
答:僵死进程就是子进程先于父进程结束了 但是父进程没有获取子进程的退出码(状态信息)
处理僵死过程的办法是使用wait
21 如下代码一共产生多少个进程?
int main()
{fork()||fork();
}
答:3个进程 具体去看我的这篇博客:
fork()||fork()||fork()
里面详细解释了这个题 以及它的拓展题
22 如下程序分别输出多少个’a’?
int main()
{for( int i = 0; i < 2; i++){fork();printf("a\n");}
}
答:6
具体解释去看我的这篇博客:
fork后有无\n的打印
23 如下程序分别输出多少个’a’?
int main()
{for( int i = 0; i < 2; i++){fork();printf("a");}
}
答:8
具体解释去看我的这篇博客:
fork之后有无\n的打印
24 什么是临界资源,什么是临界区?
答**:临界资源就是只允许一个进程访问的资源 临界区就是访问临界资源的那段代码**
25 请说明信号量的pv操作分别代表什么意思?那个操作可能阻塞为什么?
答:pv操作就是对信号量的减一和加一的操作! 当信号值由p操作减一之后变为零,临界资源就不可访问 就阻塞住了!然后v操作就是将信号量加一,使得临界资源变得再次可访问!
第一阶段复习考试题(编程题)
26 写程序,父进程复制产生子进程,在父子进程中循环打印7次字符串“parent",
在子进程中循环打印3次字符串"child",补全代码:(8分)
答案:
int main()
{char* s = NULL;int n = 0;pid_t pid = fork();if(pid == 0){for(int i = 0 ; i < 3 ; i++){printf("child");}}else{for(int i = 0 ; i < 7 ; i++){printf("parent");}}
}
27 写程序使用open,read,write,close等系统调用,对文件a.txt进行复制生成b.txt (8分)
int main()
{int fdr = open("a.txt",O_RDONLY);int fdw = open("b.txt",O_WRONLY|O_CREAT,0600);//这是两行提示代码 源码在我这篇博客中写的很明白 代码注释以及讲解都有if(fdr == -1 || fdw == -1) //创建和打开失败 返回值为-1{exit(0);//直接终止掉程序}char buff[1024] = {0};int num = 0;while((num = read(fdr,buff,50)) > 0) //文件标识符往buff中去读取 每次50个字节//ssize_t read(int fd, void *buf, size_t count);//这块fdr是文件描述符 {write(fdw,buff,num); //每次写入num个字节}close(fdr);close(fdw);
}
源码(附有讲解及原理图)博客链接:
https://blog.csdn.net/qq_45829112/article/details/120921294
28 写程序改变SIGINT信号的响应方式,使得程序在第一次收到信号时,打印信号的代号值,第二次收到信号时按默认方式结束程序。修改补全代码:(9分)
代码已经补全 下方有原理图
void sig_fun(int sig)
{printf("sig=%d\n",sig);signal(sig,SIG_DFL);
}
int main()
{signal(SIGINT,sig_fun); //SIGINT就是程序终止程序 也就是Ctrl+Cwhile(1){printf("hello\n");sleep(1);}return 0;
}
对于这道题 我们首先得知道这个原理图:
兄弟们 Linux的基础还是很重要的,不要过于注重什么高大上的代码知识,先给地基搭好,以后楼会盖的很高,未来的路也会更宽!
“想到了就去做,不要拖,不要等”
Linux阶段复习题相关推荐
- Linux认证复习题100道含答案
下面的选择题均为单选题) 1.cron 后台常驻程序 (daemon) 用于: a. 负责文件在网络中的共享 b. 管理打印子系统manages the printing subsyste ...
- linux 阶段作业领导者,Linux入职基础-5.22_命令ps显示进程状态(应用实战6)
命令ps显示进程状态(应用实战6) 简介: 由于一个应用程序可能需要启动多个进程,所以在同等情况下,进程的数量要比程序多.要对进程进行监测和控制,首先必须要了解当前进程的情况,而 ps 命令就是非常强 ...
- 下面哪个选项不是linux服务器,复习题及解答1
复习题及解答1 一:选择题(每题1分,共50分,将答案写在后面的表格里) 1.下列哪个选项不是Linux支持的?( B ) A.多用户 B.超进程 C.可移植 D.多进程 2.以下关于Linux内核版 ...
- Linux期末复习题库(4)
[试题分类]: 1.下列哪种说法是错误的( ) . A.操作系统可用于控制和管理计算机系统资源 B.操作系统可用于对各类任务进行调度 C.操作系统可用于完成源代码编译 D.操作系统应为用户提供便捷的操 ...
- Linux期末复习题库(3)
[试题分类]: 1.以下哪条命令可以查看命令passwd文件的帮助手册( ). A.man passwd B.help passwd C.ls passwd D.find passwd 试题编号:E1 ...
- Linux期末复习题库(2)
[试题分类]: 1.RHEL 6 默认使用的文件系统类型是( ) A.FAT32 B.NTFS C.ext4 D.swap 试题编号:E11097 答案:C 题型:单选题 2.为了把新建的文件系统安装 ...
- Linux期末复习题库(1)
[试题分类]: 1.下列哪种说法是错误的( ) . A.操作系统是裸机之上的第一层软件 B.操作系统控制和管理全部的计算机资源 C.Microsoft Office 是操作系统的一种 D.操作系统应为 ...
- Linux期末复习题
第一章 (1)软件包的管理方式方面,Ubuntu.CentOS的差异 centos yum rpm ubuntu apt-* dpkg (2)何添加一个新用户? useradd password (3 ...
- linux2012年上机测试,linux上机复习题(部分答案)
上机复习题 Shell命令上机操作题 1. 在当前目录下创建子目录dir1和dir2. mkdir dir1 mkdir dir2 2.以短格式查看目录/usr中的文件清单,把该信息重定向到文件my1 ...
最新文章
- Python常用技巧了解一下?
- mac 下 使用 java运行 class 文件 总是提示 “错误: 找不到或无法加载主类”的解决方法...
- 《面向对象程序设计》课程作业二
- 从零开始学keras之电影二分类
- flask before_request after_request
- 分智- 招聘,公司评论,晒工资,薪水
- Zookeeper、Hadoop、Sqoop、Mahout、HBase整合安装
- c51语言的注释,单片机C51编程规范
- VMware15.5.2安装unlocker时下载工具一直失败
- java代码实现压缩文件.gz格式,解压后无后缀名问题
- mybatis-plus批量insert效率低下怎么办(mysql)
- 华师大的计算机专业属于提前批吗,华东师范大学提前批上海录取线确定
- 【阿里在线技术峰会】魏鹏:基于Java容器的多应用部署技术实践
- 实在没忍住还是对你出手了-Tom猫源码结构
- SQLiteSpy 打开SqLite数据库文件
- APP的三种类型以及区分方法
- 爬取拉钩Java招聘数据
- 中学课程辅导杂志中学课程辅导杂志社中学课程辅导编辑部2022年第34期目录
- [python]使用python实现Hadoop MapReduce程序:计算一组数据的均值和方差
- 鼠标点击按钮相应两次