武大国软16年UNIX期末简答汇总

以下都是个人总结,难免有缺漏差错,小可爱们记得以课本为准~

(1)什么是操作系统?什么是UNIX操作系统?什么是Linux操作系统?它们之间的关系是怎样的?
操作系统:控制计算机硬件和软件资源,对作业进行合理的调度,以供用户方便使用的一组软件的集合。
UNIX操作系统,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统。
Linux,即GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
Linux继承了Unix以网络为核心的设计思想,它能运行主要的UNIX工具软件、应用程序和网络协议。
Linux系统和Windows系统的相同点及不同点

(2)UNIX操作系统有哪些典型的分支?
Linux,Mac OS X,BSD系列与Solaris

(3)什么是Shell?内置变量 $$、$*、$@、$?、$#的具体含义是什么?
shell是一个命令语言解释器,是用户和UNIX内核直接的接口,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给UNIX核心。

$$是shell脚本运行的当前进程ID$*是以一个单字符串显示所有向shell脚本传递的参数
$@是传递给shell脚本的所有参数列表
$?显示最后命令的退出状态,0表示没有错误,其他表示有错误
$#是传给脚本的参数个数

这里写图片描述

(4)常用的Shell命令,如ls、cd、dd、pwd、ps、cp、chown、chmod、mkdir等的具体用法。
ls 列出目录下的文件
cd 改变当前目录
dd 用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换(cc已被用来代表CComplier)
pwd 查看当前工作目录
ps显示系统中当前运行的进程状态
cp 复制文件
chown 更换所有者
mkdir 创建一个目录
chmod 改变文件访问权限

(5)什么是内部命令?什么是外部命令?它们的区别是什么?
1.内部命令在系统启动时就调入内存,是常驻内存的,所以执行效率高。(cd,source,fg)
2.外部命令是系统的软件功能,用户需要时才从硬盘中读入内存。(cat,ls)
内部命令:内部命令被构建在shell之中。当执行shell命令时,内部命令的执行速度非常快。这是因为没有其他的进程因为执行这条命令而被创建。比如说,当我们执行“cd”命令时,没有进程被创建。在执行过程中只是简单的改变当前的目录。
外部命令:外部命令并没有被构建在shell中。这些可执行的外部命令保存在一个独立的文件当中。当一个外部命令被执行时,一个新的进程即被创建同时命令被执行。比如说,当我们执行“cat”(通常被保存在/usr/bin目录下)命令时,然后/usr/bin/cat被执行。

(6)什么是C语言的头文件?有哪些是操作系统提供的头文件?哪些是C语言的标准头文件?
头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明。
C语言的标准头文件:ISOC标准定义的头文件
操作系统提供的头文件:POSIX标准定义的头文件

(7)C语言程序的基本结构是怎样的?编译器怎样搜索头文件?
顺序结构,选择结构,循环结构
C语言,使用include指令,包含头文件,但又细分两种形式:


形式一:#include “file1”
gcc先在当前目录(指包含本条#include指令的源文件所在的目录)寻找file1,如果找不到,继续在由-iquote选项(如果有的话)指定的目录中寻找file1。

例如,在文件/usr/include/sys/stat.h中,包含指令#include “types.h”,那么gcc先在/usr/include/sys目录下寻找types.h文件。嗯,在该目录下,确实存在一个types.h的文 件。现假设我们把这个文件移动到另一个目录:mv /usr/include/sys/types.h /bar/foo/,我们在编译时,可以通过-iquote选项,在不改变stat.h的情况下,正常编译(当然,通常不建议这样做):
gcc -iquote /bar/foo -I/usr/include/sys *.o


形式二:#include <file2>
 gcc按照以下顺序查找file2:

-Idir1 -Idir2 ... 
/usr/local/include 
libdir/gcc///include 
/usr//include 
/usr/include 

第 一行中,-Idir1 -Idir2 … 是用户通过gcc的-I选项指定的目录。值得一提的是,放在/usr/local/include/下的头文件也会被gcc自动的检索,这与/usr /local/lib/目录下的库处理方式是不一样的。


(8)怎样利用gcc编译源文件?gcc的-o、-e、-static、-Wall等选项的具体含义是什么?怎样使用?
-o 制定目标名称,缺省的时候,gcc 编译出来的文件是a.out
-e 使用-E 选项,执行预处理工作
-static 此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么动态连接库,就可以运行
-Wall 生成所有警告信息

(9)什么是动态链接库?什么是静态链接库?怎样用静态链接的方式编译C程序?
静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响了,即使库被删除了

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
1、制作ramdisk,给出主次设备号,并使用df命令显示相关信息。(20分) 要求:(1) ramdisk的大小为学号的后3位*2,单位为M; (2)对文件系统采用ext2进行格式化。 2、编写一个c程序实现下面的功能:监视一个文件,如果文件被其他进程追加了内容,就把追加的内容打印出来。(15分) (1) 假定所编辑的c程序为mytail.c,使用命令行方式将该源程序编译,目标执行程序为mytail。给出具体的编译实现过程。 (2) 假定日志文件为/usr/tmp/pppd.log,给出打印追加内容的方法。 3、设用户mali记录了在Linux系统中的某些用户的月工资清单,记录在文件mylist.txt中,假定文件mylist.txt的内容如下: #================================================== # 登录名 工作证号 姓名 月份 工资 奖金 补助 扣除 总额 #--------------------------------------------------- wang 2076 wangxi 01 1782 1500 300 175 3407 liang 2074 liangyu 02 1560 1400 280 90 3150 zhang 3087 zhangdi 03 1804 1218 206 213 3015 wang 2076 wangxi 03 1832 1550 230 245 3367 wang 2076 wangxi 04 1832 1450 230 245 3267 liang 2074 liangyu 05 1660 1450 230 70 3270 zhang 3087 zhangdi 06 1700 1310 283 270 3023 #================================================== 只允许用户zhang读取行首字符为#的行和与用户zhang有关的行,与其他用户有关的行对用户zhang保密。(15分) (1) 编写相应的查询query.c,给出目标文件为query的实现方法; (2) 给出设置mylist.txt文件权限为仅对文件主具有读写权限的实现命令; (3) 给出设置query文件用户ID权限实现命令; (4) 给出用户zhang执行程序query的结果。 4、使用fork,exec以及wait函数构造简单的shell解释程序。(15分) (1) 假定所编辑的c程序为myxsh.c,使用命令行方式将该源程序编译,目标执行程序为myxsh。给出具体的编译实现过程。 (2) 假定当前目录下有文件信息如下: 文件的行大小 文件名 文件的行大小 文件名 920 auther.c 146 licp.txt 127 myxsh.c 124 fus.h 160 chap1.h 152 myxse.c 46 fsme.h 164 fsme 运行myxsh程序出现提示符=>后,分析find . -name *.[ch] -exec wc -l {} ; 执行结果。 5、对/usr目录进行压缩归档,结果文件名位myusr.tar。(10分) 要求:(1)以控制台方式运行; (2)将该任务挂起,再转后台,再转前台,查看进程的状态变迁过程。 6、编写程序实现通过Windows客户端对Linux服务器端进行相关网络信息配置。(25分) 要求:(1)新修改服务器的IP 地址的构成方式:网络号为192.168.2.0,主机号为学号的后3位-150;掩码为255.255.255.0;默认网关为:网络号与服务器相同,主机号为1,DNS202.117.96.10; (2)服务器端程序以deamon程序的方式运行,监听端口为学号的后4位; (3)客服端使用VC++,以GUI 方式完成对服务器端的IP 地址、掩码、默认网关、DNS信息配置输入; (4)服务器端在接收客户端的配置信息后,使用exec 系列函数完成对IP 地址、掩码、默认网关、DNS修改,并写入相应的配置文件。结果验证:使用ifconfig检查IP地址信息配置的正确性;使用nslookup检查DNS信息的正确性。 把实现的信息结果与配置文件比较,检查其一致性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值