ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:131.17KB ,
资源ID:17330601      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17330601.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(习题答案全linuxWord下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

习题答案全linuxWord下载.docx

1、7命令行参数是 main 。函数的参数8 Main 函数的参数若有两个参数则第一个参数代表命令行参数个数、第二个参数代表指 向各命令行参数字符串的指针数组。9 Linux 中日期时间的表示方法有:算术类型、结构体类型、字符串类型。10使用 time 函数获得的时间是算术类型、代表自 1970 年 1 月 1 日零时到当前时间的 秒数。11把算数类型时间表示转换成结构体类型使用()函数 localtime 。12把算数类型时间表示转换成字符串类型使用()函数 ctime 。13 Maketime 函数把()类型时间表示转换成()类型时间表示 结构体、算术。14如果一个 C 程序的入口表示为 ma

2、in ( int argc ,char *argv ),编译该程序后的可 执行程序为a.out,那么在命令./a.out - f foo ”后,ma in中的参数argv1指向的字 符串是( “-f”)。15Linux 系统下表示标准输入、标准输出和标准错误输出的文件描述符(符号表示)分 别为( STDIN_FILENO 、STDOUT_FILENO 、STDERR_FILENO ),它们的值分别为 0、1 、2 。16数字 635 表示的权限使用字母的方式表示为 (rw wxr-x )、使用符号方式表示为(S_IRUSR | S_IWUSR | S_IWGRP | S_IXGRP | S_I

3、ROTH | S_IXOTH )。17系统调用 open 的功能是打开或创建文件。18 使用 open 打开文件时有三个标志必须要选择其一,这三个标志是 O_RDONLY 、O_WRONLY 、 O_RDWR 。19文件偏移量代表下一次读或写的位置。(SEEK_CUR )。21设置打开文件标志( O_TRUNC ),可以截断文件为 0 ,使用系统调用( truncate )可 以截断文件或者加长文件。22如果 umask 设置为 022 ,则创建一个新文件夹(数字表示)的权限为( 644 )、创建 一个新目录的权限为( 755 )。23如果 umask 设置为 024 ,则创建一个新文件夹(数

4、字表示)的权限为( 642 )、创建 一个新目录的权限为( 753 )。24使用系统调用( umask )可以设置和得到文件模式的屏蔽字。25创建硬链接使用系统调用( link ),创建符号链接使用系统调用( symlink )。26获得工作路径名称的系统调用是( getcwd )。27可以使用( stat 或 fstat 或 lstat )系统调用显示文件属性信息。28 chmod , chown , utime 都可以修改文件 i 节点信息,其中 chmod 的功能是(更改 文件权限)、 chown 的功能是(更改文件所有者和所属组) 、utime 的功能是(更改文件访 问时间和修改时间)

5、 。29若实现将标准输出重定向到文件描述符为 6 对应的文件上, 则应使用语句 (dup2(6,1) )。30系统调用( Unlink )的作用是删除目录项,这里的目录项是指(文件名和文件 i 节点 的对应关系) 。31打开目录使用( DIR *opendir(const char *name) )系统调用,关闭目录使用( intclosedir(DIR *dir) )系统调用,读取目录内容使用( struct dirent *readdir(DIR *dir) )系统调用。32 chdir 系统调用的功能是(改变当前目录) 。33创建目录使用( int mkdir(const char *p

6、athname, mode_t mode) )系统调用、删除目录使用( int rmdir(const char *pathname) )系统调用。三、简答题1 关于 Linux 的版本有两种不同的称呼: 一种是内核版本,一种是发行版本。2. 简述 Linux 操作系统的特点3系统调用、库函数的区别和练习 从用户角度观察,系统调用和库函数都以 C 函数形式出现,提供给用户一种功能实现 的接口,需要用户输入指定的参数,调用结束得到指定的返回值。从实现者角度观察, 库函数是在系统调用上层的函数, 库函数一般指程序员可以使用的通用 函数。系统调用由两部分组成:(1 )核心函数:是实现系统调用功能的代

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

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

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

10、RP|S_IXGRP|S_IROTH| S_IWOTH|S_IXOTH11写出 open 一下 6 种打开标志:只读、只写、读写、追加、文件不存在创建、截断为 0 O_RDONLY O_WRONLY O_RDWR O_APPEND O_CREAT O_TRUNC12读程序,写出执行结果并解释得到该结果的原因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

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

12、: dup 返回的新文件描述符为最小可用的文件描述符, dup2 返回的新文件描述符可以 通过第二个参数指定。15硬链接和符号链接的区别(1 )命令ln 原文件硬链接文件(不能对目录创建硬链接)In - s原文件/目录符号链接文件(2 )是否新增文件:硬链接不增文件,符号链接增加文件。(3) 删除原文件 /目录 硬链接:对应 i 节点链接数 -1 。符号链接:符号链接文件失效。(4) 删除链接文件 删除硬链接文件,使对应 i 节点的链接数 -1 。删除符号链接文件,对原文件 / 目录无任何影响(5) 是否跨文件系统:硬链接不可以,符号链接可以16 fork 与 vfork 区别?(1 )for

13、k 创建的子进程复制父进程的整个地址空间, vfork 不创建这一副本,子进程借用父进程的地址空间,直到其调用 exec 族函数或终止;(2 )fork 创建的子进程和父进程相互独立地运行,而 vfork 创建子进程后挂起父进程,直 到子进程终止或调用 exec 族函数。17阅读以下代码,若 execIp 调用成功的话, “ Done !”会打印输出吗?为什么? #incIudeint main()printf( “Running ps with execIpn ” );I / ” ” ” ” r ” cexecIp( “ps”,”ps”,”-af”,0);printf( “ Done!n ”

14、 );exit(0); 不会输出“ Done! ”。执行 execlp( “ ps” , ” ps ”-a,f” ,0) 调用成功后,当前进程的地址空间被新的程序 ps 所 替代,将执行“ ps -af ”18试写出下列程序段的运行结果,并解释原因int 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)x=4;y=8+y;v

15、oid main(void)pthread_t id1,id2;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 2

16、This is pthread2.the sentense 2x=11 , y=15( 1 )线程 1 先运行,线程 2 后运行。线程 1 执行 sleep(1); 后阻塞, 线程 2 继续执行, 线程 2 执行到 sleep(1); 时线程 2 阻塞, 线 程 1 阻塞结束继续执行,线程 1 执行结束后线程继续执行到结束。(2 )线程 1 和线程 2 共享进程的数据段,因此共享变量 x,y。19进程间通信的六种方式是什么?简述他们的通信原理? (1 )信号:用于通知接收进程有某种事件发生。(2 )管道:连接一个进程的输出至另一个进程的输入的一种方法。(3 )信号量:一个计数器,用来记录对某个

17、资源的使用情况。(4 )共享内存:允许多个进程访问同一块内存空间。(5 )消息队列:消息的链表,链表中每个节点包括消息类型和正文两部分。(6 )套接字:在网络上主机间进程进行通信的方式。20 PIPE 与 FIFO 的区别与联系PIPE 为未命名管道, FIFO 为命名管道。 联系: PIPE 和 FIFO 都是单向传输,一端为读,另一端为写。 区别: PIPE 只能在有亲缘关系的进程中使用,如父子进程; FIFO 有名字,所以只要知道该名字,无关进程之间也可以使用。21书名产生信号的几种方式?(1 )用户操作。如键盘操作 Ctrl-C ,最终使得内核产生信号 SIGINT 。(2 )进程执行

18、出错。如浮点数溢出,内核也会产生信号。(3 )进程执行某个系统调用。如调用 kill 向某个进程或进程组发送信号。22说明信号传递的过程。(1 )生成( generating )。内核要更新目标进程的数据结构,表示一个新的信号已经被发 送给此进程。此时,进程并没有对信号做出任何响应。(2 )传递( delivery )。强迫目标进程对信号做出响应。套接字类型 (字节流套接字、数据报套接字、原是套接字) 面向连接套接字通信过程图示 P242 无连接套接字通信过程图示 P243/ 、/、- -、 *注意三、编程题1 向文件 f1 中写入“ hello world !”,然后再将 f1 中的内容读出

19、并显示在屏幕上。 必要的错误判断)#include sys/stat.hsys/fcntl.hint fd;char buf113=hello world!;char buf212;int num;fd = open( f1,O_RDWR| O_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

20、(fd,buf2,12);=12)read less than 12nwrite(1,buf2,12);close(fd);2向文件 f2 中写入“ aabbccddee ”,然后将偏移量移到绝对值偏移为 4 的位置处,读 6 个字符,并将结果显示在屏幕上char buf111=aabbccddeechar buf210;f2f2 not openlseek(fd,4,SEEK_SET);num=read(fd,buf2,6);=6)read less than 6nwrite(1,buf2,6);3向文件 f3 中写入“ aabbccddeeffgghh ”,然后将文件截短后的文件内容读出并

21、显示在屏幕上char buf117=aabbccddeeffgghhchar buf28;f3 if(fd=-1)f3 not open if(num!=(sizeof(buf1)-1) printf(ftruncate(fd,8); num=read(fd,buf2,8);=8) printf(read less than 8nwrite(1,buf2,8); close(fd);4在程序中将 umask 改至 044 ,创建文件 f4 umask(044);creat(f4,S_IRUSR|S_IWUSR);5实现“ cat 文件名”显示文件内容fcntl.h main(int argc,

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

23、ead(from,buf,10); while(num!=0) write(to,buf,num); num=read(from,buf,10); close(from); close(to);1 编写程序 pro3.c ,将字符串“ hello world ”通过输出重定向方式写入文件 f1 中sys/types.h main() if(fd=open(,O_WRONLY|O_CREAT,0644)=-1) perror(open failif(dup2(fd,1)=-1) perror(Redirect failed printf(Hello worldn第六章 编程题 略。1 使用 fo

24、rk 创建进程,在子进程中打印“ I am the child ”和子进程 pid 印“ I am the father ”和父进程 pidstdlib.hpid_t pid;pid = fork();if(pid 0)forkelse if(pid = 0)I am the childnelseI am the fathern2创建子进程,在子进程中执行 “ps -A ”命令,父进程等待子进程结束后打印 及所处理的子进程进程号在父进程中打child overpid_t pid,cpid;int i;char* args64;args0= ” ps ” ;args1= ”-A” ; args2=NULL; pid=fork();if(pid0)perror( “ fork ” );else if(pid=0) execvp(args0,args); exit(0); cpid=wait(NULL); printf( “ child over! cpid=%d n ” ,cpid);第八章 编程题略

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1