linux期末考试及相关知识点docxWord格式文档下载.docx
《linux期末考试及相关知识点docxWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《linux期末考试及相关知识点docxWord格式文档下载.docx(9页珍藏版)》请在冰豆网上搜索。
⑵管理输入和输出;
*⑶可编程.
5.popen的工作原理?
首先把输入\输出重定向,通过for•命令来创建一个新的进程,使用管道进行连接,并且使用fdopen命令将一个文件描述符定向到缓冲流中,最后通过shell来运行・
6・web服务器的工作原理?
客户端服务器端:
建立服务
连接服务器->
接收请求
写请求-->
读取请求
处理请求:
显示冃录列表,显示内容,
运行.
读取应答V二二
挂断
显示应答
8.ps是用来查看进程的.
9.Kill命令是用来发送信号(进程之间)lO.Open打开文件返回句柄
11.Popen打开一个指向进程的带缓冲的连接
12.Fopen打开文件返回指针.
13.Fdopen是将句柄变成指针,只知道文件描述符.
14•目录操作的命令?
创建一mkdir.删除—rmdir.打开一open.
文件操作命令?
创建-mk删除-rm•重命名或移动-mv
15.cd..:
表示回到上一级目录
16・Cd〜:
表示回到主目录.
17.$:
可取变量的值,也可以取程序的执行结果.
18.Wc:
表示读单读.
19.Lseek:
定位文件指针.
20.Chmod:
改变文件权限.
21•捕鼠器:
信号处理函数有点像捕鼠器,一个信号意味着什么具有破坏性的事情发生,并被抽获•当信号或老鼠被捕获,信号处理函数或捕鼠器就失效了.
22•时间差:
在弹簧被触发和设置完成之间,需要点时间迪叫”不可靠的信号"
•
23.Set-ticker:
通过初始间隔和重复间隔设置间隔计时器.
24.如何发送信号?
一个进程通过系统调用kill给另一个进程发送信号.中断信号-sigint.退出信号-sigout.非法取段信号-sigsegv.ctrl-c/ctrl-\:
产生和中断信号.
25•什么是shell脚本语言?
及如何处理脚本?
shell脚本是一个包含一系列命令的文件,运行一个脚本就是运行这个文件屮的每个命令,对于一个脚本只需要执行一次chmod,可执行位将保持不变直到下一次在改变它.
26.shell包括两类变量:
局部变量和环境变量.
27.Pwd工作过程:
⑴得到…的i・节点号,称其为n(使用stat);
(2)chdir..(使用chdir);
(3)找至!
Ji■节点号n连接的名字(使用opendir\readir\closedir);
⑷重复(直到到达树的顶端).
2&
标准文件描述符?
标准输入(stdin)-需要处理的数据流
标准输出(stdout)-结果数据流
标准错误输出(stderr)-错误消息流.
29•什么是超级用户?
他有什么特征?
linux中的超级用户指root,也称为根用户,具有最高权限,它可以终止进程,添加或删除硬件设备,超越任何用户组的权限对文件或根目录进行读取,修改和删除.
30•什么是home目录?
对于不同的用户来说他们的home目录是否一样?
存放每个用户的主目录,用户各自的数据分别单独存在这个目录里,目录的大小取决于用户的多少,每个home目录不一样.
31•什么叫系统调用?
由操作系统实现的所有系统调用所构成的集合即程序接口或应用编程接口(ApplicationProgrammingInterface,API)。
是应用程序同系统之间的接口。
fork创建一个新进程clone按指定条件创建子进程execve运行可执行文件exit中止进程_exit立即中止当前进程getdtablesize进程所能打开的最大文件数
32•权限怎么表示?
例如:
linux下某文件权限为drw-rr-,用数值形式
表示该权限,则八进制数为,文件类型为
答案:
644,目录文件
4表示文件或者冃录的读权限
2表示文件或者目录的写权限
1表示文件或者目录的执行权限
33•怎么修改文件权限?
chmod用法?
+表示增加权限、・表示取消权限、=表示唯一设定权限。
r表示可读取,w表示可写入,x表示可执行,X表示只有当该档案是个子目录或者该档案已经被
设定过为可执行。
-rw(600)-・只有属主有读写权限。
-rw-r-r-(644)-只有属主有读写权限;
而属组用户和其他用户只有读权限。
-rwx——(700)-只有属主有读、写、执行权限。
-rwxr-xr-x(755)-属主有读、写、执行权限;
而属组用户和其他用户只有读、执行权限。
-rwx-x-x(711)-属主有读、写、执行权限;
而属组用户和其他用户只有执行权限。
-rw-rw-rw-(666)-所有用户都有文件读、写权限。
这种做法不可取。
-rwxrwxrwx(777)-所有用户都有读、写、执行权限。
更不可取的做法。
34.a=b:
表示把b存到a中,右边表变量值,左边表变量名.
35・Shell脚本的功能:
count=$##获取脚本参数个数
cmd=echo#初始化cmd变量,赋值为“echo"
while[$count-gt0]#如果count大于0,执行下面的循环
docmd=H$cmd\$$countn#给cmd重新赋值,变为"
echo${count的值}”
count=,expr$count-l'
#count减1
done#之后回到上面的while判断
eval$cmd#执行cmd命令。
二•试卷判断题.
1.open返回的文件描述符的类型为FILE*(><)
2.内核缓冲区位于磁盘文件中(>v)
3.lseek函数用于在文件中查找字符串(>v)
4.任何用户不能修改文件类型(V)
5.链接(link)是一个指向文件的指针(V)
6.软件工具总是针对特殊的终端模式来设计(><)
7.软件工具总是从标准输入或文件來获取需要处理的数据(V)
8.所有的信号都可以被忽略(>v)
9.fdopen用于打开指定文件名的文件(>v)
10.fopen可以打开设备文件但不能打开磁盘文件(>v)
三•试卷简答题
1•如何在linux中获取必要的编程参考信息?
阅读联机帮助;
搜索联机帮助;
阅读头文件;
使用参照信息;
2.进程如何处理信号?
⑴接受默认处理;
⑵忽略信号;
⑶调用一个函数;
3・Shell是如何实现输入0(输出1)重定向的?
(1)调用close关闭文件描述符0
(1);
(2)调用open打开文件;
(3),根据最低可用文件描述原则,新文件描述符为0
(1);
(4)调用exec函数执行命令;
(5)命令的标准输出来口于(进入)文件.
4.请简要说明什么是搜索路径
Linux里的指令(commands)都是文件,如果直接敲,并被执彳亍,说明该指令在你的搜索路径内,否则会有错误(commandnotfound)。
用echo$PATH会显示搜索路径中含有哪些directorieso如:
$echo$PATH
一般在homedirectory的.profile屮定义(与所用shell有^)。
5.请简要说明你选择的是Linux发行版的特点?
Slackware特点:
系统非常稳定、安全,并且高度坚持UNIX的规范;
不过市于所有的配置均通过编辑文件来进行,只适用于对liiwx非常熟悉的用户,而且自动硬件检测能力较差.
6.请简要说明文件的时间属性和链接数属性?
最后修改时I'
可;
最后访问时间;
属性最后修改时间.
7•文件有哪些基本属性?
文件类型许可位与特殊属性位连接数所有者组文件大小时间
文件名
8•你是如何了解到who命令工作原理的?
Manwho,man-kutmp.man4utmp,
More/usr/include/utmp.h
五、代码分析(10分)请分析下列脚本实现了什么功能。
whoIsort>
prev#将who的标准输出连接到sort的标准输入
whiletrue
do
sleep30#休眠30秒
current#获取当前在线用户的信息echo"
Loggedout:
"
comm-23prevcurrent#显示prev-current的内容
echoHLoggedin:
”
comm・13prevcurrent#显示current-prev的内容mvcurrentprev#用current替换prev
done
六编程
1•请用多线程实现一个单词计数器程序,主进程接受命令行上不定数目的文件名,为每个文件创建一个计数进程统计该文件中的单词数,然后把统计结果交由初始线程总输出.
#include<
stdio.h>
#include<
string.h>
#defineoop(s,x)
{perror(s);
Exit(x);
}
Intmain(intac,char*av[])
{FILE**pipe;
Intwords;
Inttotal;
Charcmd[BUFSIZ+9],
Inti;
If(ac==l)
{fprintf(stderr,"
usage:
%file..\nn,%av);
Exit(l);
Pipes=(FILE**malloc(ac*sizeof(FILE*));
If(pipes==NULL)
Oops(nmallocH,2);
For(i=l;
i<
ac;
i++){
If(strlen(av[i]>
BUFSIZ){
Fprintf(stderr,npathname%stoolong\nH,av[i]);
Exit(3);
Sprintf(cmd,Hwc-w<
%sn,av[i]);
If((pipes[i]=popen(cmd;
'
r,,))==NULL)
Oops(npopenn,4);
Total=0;
If(fscanf(pipes[i]%dn,&
word)!
=1)
Oops(nfscanf'
5);
Printf(n%7%s\nH,words,av[i]);
Total+=words;
Pclose(pipes[i]);
Printf(n%7dTOTALwords\nn,total);
Return0;
2.More
voiddo_morc(FILE*);
intsee_more();
intmain(intac,char*av[])
FILE*fp;
if(ac=1)do_more(stdin);
else
while(--ac)
if((fp=fopen(*++av,〃r〃))!
=NULL){do_more(fp);
fclose(fp);
exit
(1);
return0;
3・Popen
intmain()
{file*fp;
charbuf[100];
inti=0;
fp=popen("
wholsortn,nrn);
while(fgets(buf,100,fp)!
=NULL)
printf(”%3d%s”,i++,buf);
pclose(fp);
main(){
FILE*fp;
fp=popen(Hmailadminbackup"
nw"
);
fprintf(fp,HErrorwithbackup!
!
\nH);
pclose(fp);
4詹道p319
unistd.h>
#defineoops(m,x)
{perror(m);
exit(x);
Main(intac,char**av)
{intthepipe[2],
Newfd,pid;
If(ac!
=3){
Fprintf(stden;
nusage:
pipecmdlcmd2\nn);
If(pipe(thepipe)==-1)
Oops(HcannotgetapipeM,l);
If((pid=fork())==-1)
Oops(Hcannotfork"
2);
If(pid>
0){
Close(thepipe[l]);
If(dup2(thepipe[0],0)==-1)
Oops(ncouldnotredirectstdin*'
3);
Close(thepipe[0]);
Execlp(av⑵,av⑵,NULL);
Oops(av[2],4);
}close(thepipe[0]);
If(dup2(thepipe[1],1)==-1)
Oops(ncouldnotredirectstdout'
1,4);
Close(thepipefl]);
Execlp(av[l],av[l],NULL);
Oops(av[l],5);