欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    大连东软信息学院Linux系统编程期末练习题.docx

    • 资源ID:14685181       资源大小:22.99KB        全文页数:21页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    大连东软信息学院Linux系统编程期末练习题.docx

    1、大连东软信息学院Linux系统编程期末练习题1下列那个命令不是现实多个环境变量的CAset Bexport Cpwd Denv2获取某个环境变量值使用函数A Agetenv Bputenv Csetenv Dunsetenv1文件系统保存在磁盘的B A.引导块 B.超级块 C.i节点块 D.数据块2Linux文件系统的根目录的i节点号为C A. 0 B. 1 C.2 D.33文件描述符的数据类型是B A. char B.int C.double D.float4设置文件偏移量的系统调用是C A. truncate B. sync C . lseek D.create5下面那个不是lseek第三

    2、个参数的取值C A.SEEK_SET B.SEEK_CUR C.SEEK_NOW D.SEEK_END6Sync系统调用的功能是A A.刷新所有缓存到磁盘 B.刷新缓存中某个文件的所有信息到磁盘 C.刷新缓存中某个文件的数据到磁盘 D.刷新磁盘中某个文件的属性信息到磁盘7Fsync系统调用的功能是B A.刷新所有缓存到磁盘 B.刷新缓存中某个文件的所有信息到磁盘 C.刷新缓存中某个文件的数据到磁盘 D.刷新磁盘中某个文件的属性信息到磁盘8Fdata系统调用的功能是C A.刷新所有缓存到磁盘 B.刷新缓存中某个文件的所有信息到磁盘 C.刷新缓存中某个文件的数据到磁盘 D.刷新磁盘中某个文件的属性

    3、信息到磁盘1可以使用(C)系统调用获得符号链接所引用文件名称 A.link B.symlink C.readlink D.softlink 2获得工作路径名称的系统调用是A A.getcwd B.getpwuid C.getgrgid D.getlogin 3通过文件属性中的uid获得文件拥有者名字的系统调用是B A.getcwd B.getpwuid C.getgrgid D.getlogin 4通过文件属性中的gid获得文件所属组名字的系统调用是C A.getcwd B.getpwuid C.getgrgid D.getlogin5根据文件路径来改变文件权限使用系统调用是B A.chown

    4、 B.chmod C.fchmod D.fchown 一、填空题1关于Linux的版本有两种不同的称呼:一种是内核版本,一种是发行版本。1Vi的三中工作模式:插入模式、命令模式、末行模式。2Gcc生成可执行文件的四个步骤:预处理、编译、汇编、链接。3Makefile 用来描述程序或工程中各个文件之间的相互联系4make。命令用来及时makefile文件中的命令5库分为 静态库 和共享库 。1命令行参数是main。函数的参数2Main函数的参数若有两个参数则第一个参数代表命令行参数个数、第二个参数代表指向各命令行参数字符串的指针数组。3Linux 中日期时间的表示方法有:算术类型、结构体类型、字

    5、符串类型。4使用time函数获得的时间是算术类型、代表自1970年1月1日零时到当前时间的秒数。5把算数类型时间表示转换成结构体类型使用()函数localtime。6把算数类型时间表示转换成字符串类型使用()函数ctime。7Maketime函数把()类型时间表示转换成()类型时间表示 结构体、算术。8如果一个C程序的入口表示为main(int argc,char *argv),编译该程序后的可执行程序为a.out,那么在命令“./a.out f foo”后,main中的参数argv1指向的字符串是(“-f”)。1Linux系统下表示标准输入、标准输出和标准错误输出的文件描述符(符号表示)分别

    6、为(STDIN_FILENO、STDOUT_FILENO 、STDERR_FILENO),它们的值分别为0、1、2。2数字635表示的权限使用字母的方式表示为 (rwwxr-x)、使用符号方式表示为(S_IRUSR | S_IWUSR | S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH)。3系统调用open的功能是打开或创建文件。4 使用open打开文件时有三个标志必须要选择其一,这三个标志是O_RDONLY、O_WRONLY、O_RDWR。5文件偏移量代表下一次读或写的位置。6将文件偏移量市值为当前偏移处之前的4个字节的维护使用lseek(fd,(4),(SEEK

    7、_CUR)。7设置打开文件标志(O_TRUNC),可以截断文件为0,使用系统调用(truncate)可以截断文件或者加长文件。8如果umask设置为022,则创建一个新文件夹(数字表示)的权限为(644)、创建一个新目录的权限为(755)。9如果umask设置为024,则创建一个新文件夹(数字表示)的权限为(642)、创建一个新目录的权限为(753)。1使用系统调用(umask)可以设置和得到文件模式的屏蔽字。2创建硬链接使用系统调用(link),创建符号链接使用系统调用(symlink)。3获得工作路径名称的系统调用是(getcwd)。4可以使用(stat或fstat或lstat)系统调用显

    8、示文件属性信息。5chmod,chown,utime都可以修改文件i节点信息,其中chmod的功能是(更改文件权限)、chown的功能是(更改文件所有者和所属组)、utime的功能是(更改文件访问时间和修改时间)。6若实现将标准输出重定向到文件描述符为6对应的文件上,则应使用语句(dup2(6,1))。1系统调用(Unlink)的作用是删除目录项,这里的目录项是指(文件名和文件i节点的对应关系)。2打开目录使用(DIR *opendir(const char *name))系统调用,关闭目录使用( int closedir(DIR *dir))系统调用,读取目录内容使用(struct dire

    9、nt *readdir(DIR *dir))系统调用。3chdir系统调用的功能是(改变当前目录)。4创建目录使用(int mkdir(const char *pathname, mode_t mode))系统调用、删除目录使用(int rmdir(const char *pathname))系统调用。一、简答题1关于Linux的版本有两种不同的称呼:一种是内核版本,一种是发行版本。2.简述Linux操作系统的特点 3系统调用、库函数的区别和练习从用户角度观察,系统调用和库函数都以C函数形式出现,提供给用户一种功能实现的接口,需要用户输入指定的参数,调用结束得到指定的返回值。从实现者角度观察,

    10、库函数是在系统调用上层的函数,库函数一般指程序员可以使用的通用函数。系统调用由两部分组成:(1)核心函数:是实现系统调用功能的代码,作为操作系统的核心驻留在内存中,是一种共享代码。运行在核心态。(2)接口函数:是提供给应用程序的API,以库函数的形式存在于Linux的lib.a中,该库中存放了所有系统调用的接口函数的目标代码,用汇编语言书写。其主要功能是把系统调用号,入口参数地址传给相应的核心函数,并使用户态下运行的应用程序陷入核心态。4完成如下命令(1)新建用户tom 和用户组student#useradd tom#passwd tom#groupadd student(2)新建文件file

    11、#touch file(3)将文件file 改名为test,然后将test拷贝到/home#mv file test#cp test /home (4)将/home/test文件的拥有着修改为tom,将文件所属组该为student#chown tom:student /home/test1静态库和共享库的区别(1)静态库的代码在编译时就已连接到开发人员开发的应用程序中。(2)共享库只是在程序开始运行时才载入,在编译时,只是简单地指定需要使用的库函数。(3)静态库文件以.a结尾,共享库文件以.so结尾。 2Makefile 文件的显式规则是什么?目标文件:依赖文件列表更新目标文件使用的命令1Li

    12、nux文件类型主要有哪七类?常规文件、目录文件、字符设备文件、块设备文件、管道文件、链接文件、套接字文件2简述文件、i节点、文件名、目录之间的关系每个存在磁盘上的文件都由i节点和数据块两部分组成,i节点和文件一一对应,一个i节点可以对应多个文件名,文件名和i节点的对应关系叫做文件的硬链接,文件名和i节点的对应关系保存在目录文件中。3什么是文件描述符?(1)一个非负整数,内核以此来标识一个特定进程正在操作的文件。(2)012代表三个标准的文件描述符,分别为标准输入、标准输出、标准错误输出4使用符号方式表示rwxrwxrwx权限S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_I

    13、WGRP|S_IXGRP|S_IROTH| S_IWOTH|S_IXOTH5写出open一下6种打开标志:只读、只写、读写、追加、文件不存在创建、截断为0O_RDONLY O_WRONLY O_RDWR O_APPEND O_CREAT O_TRUNC 6读程序,写出执行结果并解释得到该结果的原因main() int fd1,fd2; fd1=open(“/etc/passwd”,O_RDONLY); fd2=open(“/etc/passwd”,O_RDWR); printf(“fd1=%d,fd2=%dn”,fd1,fd2); close(fd1); close(fd2);结果:fd1=3

    14、 fd2=4原因:open返回的文件描述符为最小可用的非负整数,012是三个标准的文件描述符默认已经被占用,所以第一个open的返回值为3,第二个open返回的是4。1回答stat、fstat、latat三个系统调用的区别stat根据路径获得文件元数据信息fstat根据文件描述符获得文件元数据信息前两者如果遇到符号链接文件则会一直引用至非符号链接文件lstat获得符号链接文件本身的文件元数据信息2dup和dup2的区别和联系联系:dup与dup2都用来将新文件描述符指向原来文件描述符指向的打开文件描述。区别:dup返回的新文件描述符为最小可用的文件描述符,dup2返回的新文件描述符可以通过第二

    15、个参数指定。3硬链接和符号链接的区别(1)命令ln 原文件硬链接文件(不能对目录创建硬链接)ln s 原文件/目录符号链接文件(2)是否新增文件:硬链接不增文件,符号链接增加文件。(3)删除原文件/目录硬链接:对应i节点链接数-1。符号链接:符号链接文件失效。 (4)删除链接文件删除硬链接文件,使对应i节点的链接数-1。删除符号链接文件,对原文件/目录无任何影响(5)是否跨文件系统:硬链接不可以,符号链接可以1fork与vfork区别?(1)fork创建的子进程复制父进程的整个地址空间,vfork不创建这一副本,子进程借用父进程的地址空间,直到其调用exec族函数或终止;(2)fork创建的子

    16、进程和父进程相互独立地运行,而vfork创建子进程后挂起父进程,直到子进程终止或调用exec族函数。2阅读以下代码,若execlp调用成功的话,“Done!”会打印输出吗?为什么?#includeint main() printf(“Running ps with execlpn”); execlp(“ps”,”ps”,”-af”,0); printf(“Done!n”); exit(0);不会输出“Done!”。原因:执行execlp(“ps”,”ps”,”-af”,0)调用成功后,当前进程的地址空间被新的程序ps所替代,将执行“ps -af”1试写出下列程序段的运行结果,并解释原因int

    17、x=0,int y=0;void thread1(void) printf(“This is pthread1.the sentence 1n”); y=7; sleep(1); printf(“This is pthread1.the sentence 2n”); x=x+y;void thread2(void) printf(“This is pthread1.the sentence 1n”); x=4; sleep(1); printf(“This is pthread1.the sentence 1n”); y=8+y;void main(void) pthread_t id1,id

    18、2;pthread_create(&id1,NULL,(void *)thread1,NULL);pthread_ create(&id2,NULL,(void *)thread2,NULL);pthread_join(id1,NULL);pthread_ join(id2,NULL);printf(“x=%d,y=%dn”,x,y);答案:This is pthread1.the sentense 1This is pthread2.the sentense 1This is pthread1.the sentense 2This is pthread2.the sentense 2x=11

    19、,y=15原因:(1)线程1先运行,线程2后运行。线程1执行sleep(1);后阻塞,线程2继续执行,线程2执行到sleep(1);时线程2阻塞,线程1阻塞结束继续执行,线程1执行结束后线程继续执行到结束。(2)线程1和线程2共享进程的数据段,因此共享变量x,y。1进程间通信的六种方式是什么?简述他们的通信原理?(1)信号:用于通知接收进程有某种事件发生。(2)管道:连接一个进程的输出至另一个进程的输入的一种方法。(3)信号量:一个计数器,用来记录对某个资源的使用情况。(4)共享内存:允许多个进程访问同一块内存空间。(5)消息队列:消息的链表,链表中每个节点包括消息类型和正文两部分。(6)套接

    20、字:在网络上主机间进程进行通信的方式。2PIPE与FIFO的区别与联系PIPE为未命名管道,FIFO为命名管道。联系:PIPE和FIFO都是单向传输,一端为读,另一端为写。区别:PIPE只能在有亲缘关系的进程中使用,如父子进程;FIFO有名字,所以只要知道该名字,无关进程之间也可以使用。3书名产生信号的几种方式?(1)用户操作。如键盘操作Ctrl-C,最终使得内核产生信号SIGINT。(2)进程执行出错。如浮点数溢出,内核也会产生信号。(3)进程执行某个系统调用。如调用kill向某个进程或进程组发送信号。4说明信号传递的过程。(1)生成(generating)。内核要更新目标进程的数据结构,表

    21、示一个新的信号已经被发送给此进程。此时,进程并没有对信号做出任何响应。(2)传递(delivery)。强迫目标进程对信号做出响应。套接字类型 (字节流套接字、数据报套接字、原是套接字)面向连接套接字通信过程图示 P242无连接套接字通信过程图示 P2431向文件f1中写入“hello world!”,然后再将f1中的内容读出并显示在屏幕上。(注意必要的错误判断)#include #include #include int main() int fd; char buf113=hello world!; char buf212; int num; fd = open( f1,O_RDWR| O_

    22、CREAT | O_TRUNC, 0644); if(fd=-1) perror(f1 not open); exit(1); num=write(fd,buf1,sizeof(buf1)-1); if(num!=(sizeof(buf1)-1) printf(write less than wantn); lseek(fd,0,SEEK_SET); num=read(fd,buf2,12); if(num!=12) printf(read less than 12n); write(1,buf2,12); close(fd);2向文件f2中写入“aabbccddee”,然后将偏移量移到绝对值

    23、偏移为4的位置处,读6个字符,并将结果显示在屏幕上#include #include #include int main() int fd; char buf111=aabbccddee; char buf210; int num; fd = open( f2,O_RDWR| O_CREAT | O_TRUNC, 0644); if(fd=-1) perror(f2 not open); exit(1); num=write(fd,buf1,sizeof(buf1)-1); if(num!=(sizeof(buf1)-1) printf(write less than wantn); lsee

    24、k(fd,4,SEEK_SET); num=read(fd,buf2,6); if(num!=6) printf(read less than 6n); write(1,buf2,6); close(fd);3向文件f3中写入“aabbccddeeffgghh”,然后将文件截短后的文件内容读出并显示在屏幕上#include #include #include int main() int fd; char buf117=aabbccddeeffgghh; char buf28; int num; fd = open( f3,O_RDWR| O_CREAT | O_TRUNC, 0644); i

    25、f(fd=-1) perror(f3 not open); exit(1); num=write(fd,buf1,sizeof(buf1)-1); if(num!=(sizeof(buf1)-1) printf(write less than wantn); lseek(fd,0,SEEK_SET); ftruncate(fd,8); num=read(fd,buf2,8); if(num!=8) printf(read less than 8n); write(1,buf2,8); close(fd);4在程序中将umask改至044,创建文件f4#include #include #inc

    26、lude int main() int fd; umask(044); creat(f4,S_IRUSR|S_IWUSR);5实现“cat文件名”显示文件内容#include main(int argc,char *argv) int fd; int num; char buf10; if(argc!=2) printf(miss filenamen); exit(1); fd=open(argv1,O_RDONLY); if(fd=-1) perror(error open); exit(1); while(num=read(fd,buf,10)!=0) write(1,buf,num);

    27、close(fd);6实现“cp 原文件 目标文件”#include #include main(int argc,char *argv) int from,to; int num; char buf10; if(argc!=3) printf(argument errorn); exit(1); from=open(argv1,O_RDONLY); to=open(argv2,O_WRONLY|O_CREAT|O_TRUNC,0644);num=read(from,buf,10);while(num!=0) write(to,buf,num); num=read(from,buf,10);

    28、close(from); close(to);1编写程序pro3.c,将字符串“hello world”通过输出重定向方式写入文件f1中#include #include #include #include #include main() int fd; if(fd=open(f1,O_WRONLY|O_CREAT,0644)=-1) perror(open fail); if(dup2(fd,1)=-1) perror(Redirect failed); printf(Hello worldn); close(fd);第六章 编程题 略。1使用fork创建进程,在子进程中打印“I am the child”和子进程pid,在父进程中打印“I am the father”和父进程pid#include #include #include int main() pid_t pid; pid = fork(); if(pid 0) perror(fork); exit(1); else if(pid = 0) printf(I am the childn); else printf(I am the fathern); exit(0);2创建子进程,在子进程中执行


    注意事项

    本文(大连东软信息学院Linux系统编程期末练习题.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开