版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、选择题 (每题 2分,共 40分 )1.下列哪种打开文件的方式不能修改文件已有的内容( B )A r+BrC w+Da+2.以下哪种不是进程的状态( B )A 运行态B锁定态C 睡眠态D停止态3. 以读写方式打开一个已存在的标准I/O 流时应指定哪个 mode 参数 ( B )A rB r+C w+Da+4. fork() 的返回值不可能是A -1( C )B 0C 1D大于10000的正整数5. 常用来进行多任务同步的机制是( B )A 管道B信号量C信号(异步通信方式, 中断机制的模拟)D共享内存 (本身不提供同步机制,可自行添加信号量实现同步 )信号量:解决进程线程之间的同步与互斥问
2、题的一种通信机制:信号量变量 和这个变量的等待队列 、两个原子操作(PV ).6. 下列哪个函数无法传递进程结束时的状态( A )AcloseB exitC _exitD returnvoid exit( int status)7. 以下哪种用法可以等待接收进程号为 A waitpid(pid, &status, 0) C waitpid(-1, &status, 0)pid 的子进程的退出状态(A ) P59Bwaitpid(pid, &status, WNOHANG)Dwaitpid(-1, &status, WNOHANG)WNOHANG:子进程没结束,不
3、阻塞立即返回,返回值为0。0:阻塞父进程,直到子进程退出。8. What kind of IPC has the highest efficiency? ( B )A semaphoreB sharedmemoryC fifoD message queueE signal9. 下列对无名管道描述错误的是( C )A 半双工的通信模式B 有固定的读端和写端C 可以使用 lseek 函数D 只存在于内存中10.下列对于有名管道描述错误的是( D )A 可以用于互不相关的进程间B 通过路径名来打开有名管道C 在文件系统中可见D 管道内容保存在磁盘上11. 下列不属于用户进程对信号的响应方式的是( B
4、 )(A忽略信号B保存信号1 终止SIGINTCtrl+c ,SIGINTQUITC捕捉信号。2 暂停DSIGSTOP 。按缺省方式处理3 停止 SIGTSTPCtrl+z. 。 4 忽略SIGCHILD)12. 不能被用户进程屏蔽的信号是( B )A SIGINTB SIGSTOP /SIGKILLC SIGQUITD SIGILL非法指令时发出13. 下列哪个是不带缓存的 ( C )A stdinB stdoutC stderrD都不是14. 下列不属于 IPC 对象的是 (A )A管道B共享内存C消息队列D信号灯IPC对象通过它的标识符来引用和访问,这个标识符是一个非负整数,它唯一的标识
5、了一个 IPC 对象,这个 IPC 对象可以是消息队列或信号量或共享存储器中的任意一种类型15. 如果键盘输入为 abcdef,程序如下所示,打印结果应该是( A )charbuffer6;fgets(buffer, 6, stdin);/遇到 n 或 读取了 size 1 个字符后返回.printf( “%s”, buffer);AabcdeB abcdefC abcdef后出现乱码D段错误16. 用 open( )创建新文件时,若该文件存在则可以返回错误信息的参数是( B )AO_CREAT(创建新文件)BO_EXCLCO_TRUNC( 删除原有数据)D O_NOCTTYint open(
6、 const char *pathname, int flags, int perms)17. 下列不是用户进程的组成部分的是( D )A正文段B用户数据段C系统数据段Delf 段进程是由进程控制块、程序段、数据段三部分组成18. 以下哪种方法无法查看进程的信息( C )A psB查看 /proc 目录C killD topLinux 系统中每一个进程都会有/proc 文件系统下的与之对应的一个目录放在 /proc/1 目录下 )。( init进程信息存19. 默认情况下,不会终止进程的信号是( D )A SIGINTB SIGKILLC SIGALRMDSIGCHLD20. fread()
7、返回值的含义是( B )A读取的字节数B读取的对象数C缓冲区的首地址D 0size_t fread (void *ptr, size_t size, size_t nmemb, FILE *stream);二、简答题 (30 分 )1. 请描述进程和程序的区别?(5 分)进程和程序的区别程序是 静态 的,它是一些保存在 磁盘 上的指令的有序集合, 没有任何执行的概念进程是一个 动态 的概念,它是程序 执行的过程 ,包括创建、调度和消亡进程是一个独立的 可调度的任务进程是一个抽象实体。当系统在执行某个程序时,分配和释放 的各种资源进程是一个程序的一次执行的过程进程是程序执行和资源管理的最小单位2
8、.指出静态库和共享库的区别(使用方法,对程序的影响) ( 5 分)静态库在程序 编译时会被连接到目标代码中,程序 运行时将不再需要该静态库,因此体积较大 。动态库在程序编译时并不会被连接 到目标代码中, 而是在程序运行是才被载入,因此在程序 运行时还需要动态库存在,因此代码 体积较小 。3. 写出设置信号处理函数和用户定义的信号处理函数的原型(5 分)void (*signal(int signum, void (*handler)(int)(int);typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sigha
9、ndler_t handler); void driver_handler(int signo);void (*handler)(int );handler,一个指向函数的指针,该函数有一个int参数,返回 void 。T *signal(intsigno, P), P = void (*handler)(int ) ;signal ,一个函数,该函数有2 个参数( signo, P),返回类型 T 的指针。void (T) (int) , T = signal(int signo, P)T,一个函数,该函数有一个int参数,返回 void。4. 程序代码如下,请按执行顺序写出输出结果(10分
10、)int main() pid_t pid1,pid2;if(pid1=fork() = = 0)/ 子进程处理程序sleep(3);printf( “info1 from child process_1n ”);exit(0);printf( “info2 from child process_1n ”);elseif(pid2=fork() = = 0)/子进程 2sleep(1);printf( “info1 from child process_2n ”);exit(0);elsewait(NULL);wait(NULL);printf( “info1 from parent proc
11、essn ”);printf( “info2 from parent process ”);_exit(0);info1 from child process_2info1 from child process_1info1 from parent process5. 列出任意四种进程间通信的方式(5 分)传统的进程间通信方式无名管道 (pipe) 、有名管道 (fifo) 和信号 (signal)System V IPC 对象共享内存 (share memory)、消息队列 (message queue)和信号灯 (semaphore)BSD套接字 (socket)三、综合题 (30 分 )
12、1. 指出创建守护进程的步骤 (5 分) P651)创建子进程,父进程退出fork() , exit()2)在子进程中创建新会话setsid()3)改变当前目录为根目录chdir()4)重设文件权限掩码umask( 0)5)关闭文件描述符close()2.请画出 Linux 中进程的状态切换图(5 分 )3. 用文件 IO 分别实现标准 IO 中的 (r, r+, w, w+, a, a+), 文件名由 argv1 传入程序 .(O_RDONL Y, O_WRONL Y, O_RDWR, O_CREA T, O_TRUNC, O_APPEND)(10分 )int open (const cha
13、r *pathname, int flags, int perms);r:open(argv1,O_RDONL Y ) ;r+:open (argv1,O_RDWR);w:open(argv1,O_WRONL Y | O_CREAT | O_TRUNC,0666);w+:open(argv1,O_RDWR | O_CREAT | O_TRUNC,0666);a:open(argv1,O_WRONL Y | O_CREAT | O_APPEND,0666);a+:open(argv1,O_RDWR | O_CREAT | O_APPEND,0666);4.编写程序实现如下功能(10 分 ):re
14、ader.c从 argv1 所指定的文件中读取内容,依次写到管道/home/linux/myfifo中writer.c从管道 /home/linux/myfifo中读取内容,写到argv1 所指定的文件中并保存代码中可省略头文件,/home/linux/myfifo无需创建Read.cint main(int argc, const char *argv)int fd,fd_src;char buf32;int bytes;if(argc < 2)printf("Usage %s src_filen",argv0);return -1;if(fd = open(&qu
15、ot;/home/linux/myfifo",O_WRONLY) ) < 0)perror("fail to open");return -1;if( fd_src = open(argv1,O_RDONLY) < 0)perror("fail to open");return -1;while( bytes = read(fd_src,buf,32) ) > 0)write(fd,buf,bytes);close(fd);close(fd_src);return 0;Write.cint main(int argc, const char *argv)int fd,fd_dest;char buf32;int bytes;if(argc < 2)printf("Usage %s dest_filen",argv0);return -1;if(fd = open("/home/linux/myfifo",O_RDONLY) < 0)perror(&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论