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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

Linux期末复习有参考答案.docx

1、Linux期末复习有参考答案Linux期末复习1.UNIX/Linux系统中条件变量需要和什么机制配合?互斥锁。2.Linux多线程编程中,触发pthread_cond_wait返回的条件?pthread_cond_signal() 或 pthread_cond_broadcast() 唤醒,并且互斥锁在解锁状态。3.不同进程共享相同文件表项的情况?不同进程共享同一个文件表项(父子进程)4.进程从main()函数开始执行,它的异常结束方式?1.调用abort,产生SIGABRT信号2.接收到终止信号5.在UNIX/Linux命令中实现标准输入重定向?command input-file6.文件

2、要取消该文件的文件所有者的执行权限,同时增加该文件的同组用户的写权限,可以使用的命令?chmod u-x file; chmod g+w file7.UNIX/Linux系统中的标准错误的文件描述符值?标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误(standard error)是 28.调用fork函数后该函数返回值为0,1的意义?0为子进程,1为父进程9.进程间通信的共享内存机制?XSI IPC10.指定所等待子进程的ID又可以请求内核返回子进程使用的资源情况汇总函数?wait3,wait411.exec类函数中哪个可

3、以通过环境变量PATH来指定路径?execlp12.调用lseek函数时,设置第三个参数为SEEK_CUR的意义?将该文件的偏移量设置为距文件当前位置加offset个字节;13.UNIX/Linux系统中每个文件有9个文件权限位,按照访问文件的用户身份不同可以将这些文件权限位分为三个域,分别是哪些域?文件所有者,同组用户,其他用户14.在UNIX/Linux系统中C程序内存空间布局包括哪些段?栈,堆,非初始化数据段,初始化数据段,正文段15.UNIX/Linux系统为每个进程自动打开三个文件,是什么文件?标准输入、标准输出和标准错误文件16.XSI IPC机制包括哪些内容?信号量,消息队列,内

4、存共享17.在UNIX/Linux系统中,为了在一个目录中创建一个新文件,必须对该目录具有什么权限?写入权限和执行权限18.进程和线程有哪些区别以及Linux系统提供了哪些线程同步机制?1. 线程是进程内的独立执行实体和调度单元。进程有独立的地址空间,线程没有;线程是处理器调度的基本单位,但进程不是;进程是资源分配和拥有的单位,线程只能和同一个进程内的线程共享进程的资源.2. 互斥量,读写锁,条件变量19.在UNIX/Linux系统中可以认为操作系统用了三张表来描述一个打开的文件,哪三张表?这三张表各自描述了文件的哪些属性?它们之间是如何联系起来的?1.文件描述符表,文件表,索引节点表2.文件

5、描述符表:文件描述符标志,指向一个文件表项的指针。文件表:文件状态标志,文件读写偏移量,指向该文件索引节点表项的指针。索引节点表:文件属性,数据块位置,当前文件长度。3.通过指针指向对应表项20.在UNIX/Linux系统中/etc/shadow文件用来存储用户密码,所有用户都可以通过执行passwd命令(/usr/bin/passwd)修改自己的秘密(修改/etc/shadow文件),但非root的其他用户对/etc/shadow文件没有读写权限。为什么所有用户都可以通过执行passwd命令修改自己的密码(修改/etc/shadow文件)这是因为用户执行“/usr/bin/passwd”命令

6、时,/usr/bin/passwd文件设置了setuid位,在执行此程序(/usr/bin/passwd)时,该用户所拥有的权限等同于文件“/usr/bin/passwd”的拥有者root的权限,而root用户拥有对/ect/passwd文件写的权限,因此普通用户可以通过/usr/bin/passwd来修改/etc/shadow文件的内容。21.在UNIX系统下利用C语言编程,通过使用多线程和条件变量实现以下两个线程的同步工作:线程A与线程B互斥地访问共享资源count(整形,全局变量,其初值为0)线程A判断count的值是否大于0,如果大于0则执行count=count-1操作,循环往复线程

7、B执行count=count+1操作,循环往复在main函数中首先创建线程A,再创建线程B#include #include #include pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;/*初始化互斥锁*/pthread_cond_t cond = PTHREAD_COND_INITIALIZER;/*初始化条件变量*/void *threadA(void *);void *threadB(void *);int count = 0;int main(void) pthread_t A; pthread_t B; pthread_cre

8、ate(&A,NULL,threadA,(void *)NULL);/*创建进程A*/ pthread_create(&B,NULL,threadB,(void *)NULL); /*创建进程B*/ pthread_join(A, NULL);/*等待进程A结束*/ pthread_join(B, NULL);/*等待进程B结束*/ pthread_mutex_destroy(&mutex); pthread_cond_destroy(&cond); exit(0);void *threadA(void *junk) while(1) pthread_mutex_lock(&mutex);/*

9、锁住互斥量*/ if(count 0) count -= 1; pthread_cond_signal(&cond);/*条件改变,发送信号,通知t_b进程*/ pthread_mutex_unlock(&mutex);/*解锁互斥量*/ printf(%dn, count); void *threadB(void *junk) while(1) pthread_mutex_lock(&mutex); count += 1; pthread_cond_wait(&cond,&mutex);/*解锁mutex,并等待cond改变*/ pthread_mutex_unlock(&mutex); 2

10、2.在LInux系统下利用C语言编程,实现一个程序,该程序功能类似于一个简单的shell程序,其具体要求为:从标准输入读取输入的命令名/可执行文件名(要求用户输入的命令名和和可执行文件名为绝对路径,可以不考虑参数传递),以回车作为命令/可执行文件名输入的结束,然后创建子进程执行对应的命令/可执行文件,此时程序本身不再进行任何操作直到当前命令/可执行文件执行结束为止;该程序一次只执行一条命令/可执行文件,不需要考虑输入输出重定向和管理,不需要考虑信号处理。#include#include #include #include #include int main(int argc,char *arg

11、v) if(argc 2) printf(Usage: %s commandn,argv0); return 0; pid_t pid; int status; if(pid = fork()pw_name); grp = getgrgid(my_info-pw_gid); if (!grp) strcpy(groupname,-); else strcpy(groupname,grp-gr_name); strcat(username,t); strcat(username,groupname); strcpy(userinfo,username); return userinfo;char

12、 *getinfo(char *path) static char str1000; struct stat info; stat(path,&info); strcpy(str, -); if (S_ISDIR(info.st_mode) str0 = d; else if (S_ISCHR(info.st_mode) str0 = c; else if (S_ISBLK(info.st_mode) str0 = b; else str0 = -; if (info.st_mode & S_IRUSR) str1 = r; if (info.st_mode & S_IWUSR) str2 =

13、 w; if (info.st_mode & S_IXUSR) str3 = x; if (info.st_mode & S_IRGRP) str4 = r; if (info.st_mode & S_IWGRP) str5 = w; if (info.st_mode & S_IXGRP) str6 = x; if (info.st_mode & S_IROTH) str7 = r; if (info.st_mode & S_IWOTH) str8 = w; if (info.st_mode & S_IXOTH) str9 = x; char tmp20; strcat(str, ); spr

14、intf(tmp,%ld,info.st_nlink); strcat(str,tmp); strcat(str, ); strcat(str,getuserinfo(info.st_uid); strcat(str, ); sprintf(tmp,%20ld,info.st_size); strcat(str,tmp); strcat(str, ); strcat(str,getformattime(info.st_mtime); return str; int main(int argc,char *argv) DIR *dp ; struct dirent *dirp; int max_

15、dir_length = sysconf(_PC_PATH_MAX); char dirmax_dir_length; if (argc != 2) char bufmax_dir_length; if(getcwd(buf,max_dir_length) strcpy(dir,buf); else print_error(Dir is too long or something error!); else strcpy(dir,argv1); if (dp = opendir(dir) = NULL) print_error(Read dir failed!); char tmp_dirmax_dir_length; while (dirp = readdir(dp) != NULL) if(strcmp(dirp-d_name,.) & strcmp(dirp-d_name,.) strcpy(tmp_dir,dir); strcat(tmp_dir,/); printf(%s %sn,getinfo(strcat(tmp_dir,dirp-d_name),dirp-d_name); closedir(dp); exit(0);

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

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