《2022年-IO进程测试题.docx》由会员分享,可在线阅读,更多相关《2022年-IO进程测试题.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -一、挑选题 每题 2 分,共 40 分 1. 以下哪种打开文件的方式不能修改文件已有的内容 B A r+ B r C w+ D a+ 2. 以下哪种不是进程的状态 B A 运行态 B 锁定态 C 睡眠态 D 停止态3. 以读写方式打开一个已存在的标准 I/O 流时应指定哪个 mode 参数 B A r B r+ C w+ D a+ 4. fork 的返回值不行能是 C A -1 B 0 C 1 D 大于 10000 的正整数5. 常用来进行多任务同步的机制是 B A 管道 B 信号量 C 信号(异步通信方式,
2、 中断机制的模拟)D 共享内存 本身不供应同步机制,可自行添加信号量 实现同步 信号量:解决进程 线程之间的同步与互斥问题的一种通信机制:信号量变量 和这个变量的等待队列 、两个原子操作(PV). 6. 以下哪个函数无法传递进程终止时的状态 A Aclose B exit C _exit D return void exit int status 7. 以下哪种用法可以等待接收进程号为 pid 的子进程的退出状态 A P59A waitpidpid, &status, 0 B waitpidpid, &status, WNOHANG C waitpid-1, &status, 0 D wait
3、pid-1, &status, WNOHANG WNOHANG: 子进程没终止,不堵塞立刻返回,返回值为 0;0:堵塞父进程,直到子进程退出;8. What kind of IPC has the highest efficiency. B A semaphore B sharedmemory C fifo D message queue E signal 9. 以下对无名管道描述错误选项 C A 半双工的通信模式B 有固定的读端和写端C 可以使用 lseek 函数D 只存在于内存中10.以下对于出名管道描述错误选项 D A 可以用于互不相关的进程间B 通过路径名来打开出名管道细心整理归纳 精
4、选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 7 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -C 在文件系统中可见D 管道内容储存在磁盘上11. 以下不属于用户进程对信号的响应方式的是 B A 忽视信号 B 储存信号 C 捕获信号 D 按缺省方式处理(1 终止 SIGINT Ctrl+c ,SIGINTQUIT ;2 暂停 SIGSTOP ; 3 停止 SIGTSTP Ctrl+z. ; 4 忽视 SIGCHILD)12. 不能被用户进程屏蔽的信号是 B A SIGINT
5、 B SIGSTOP /SIGKILL C SIGQUIT D SIGILL 非法指令时发出13. 以下哪个是不带缓存的 C C stderr D 都不是D 信号灯A stdin B stdout 14. 以下不属于IPC 对象的是A C 消息队列A 管道B 共享内存IPC 对象通过它的标识符来引用和拜访,这个标识符是一个非负整数,它唯独的标识了一个 IPC 对象,这个 IPC 对象可以是消息队列或信号量或共享储备器中的任意一种类型15. 假如键盘输入为 abcdef,程序如下所示,打印结果应当是 A char buffer6; fgetsbuffer, 6, stdin; printf “%
6、s”, buffer; /遇到 n 或 读取了 size 1 个字符后返回 .A abcde B abcdef C abcdef 后显现乱码 D 段错误16. 用 open 创建新文件时,如该文件存在就可以返回错误信息的参数是 B A O_CREAT 创建新文件 B O_EXCL C O_TRUNC 删除原有数据 D O_NOCTTY int open const char *pathname, int flags, int perms 17. 以下不是用户进程的组成部分的是 D A 正文段 B 用户数据段 C 系统数据段 D elf 段进程是由 进程掌握块、程序段、数据段 三部分组成18.
7、以下哪种方法无法查看进程的信息 C A ps B 查看 /proc 目录 C kill D top Linux 系统中每一个进程都会有 /proc 文件系统下的与之对应的一个目录 init 进程信息存放在 /proc/1 目录下 ;细心整理归纳 精选学习资料 19. 默认情形下,不会终止进程的信号是 D C SIGALRM D SIGCHLD 第 2 页,共 7 页 A SIGINT B SIGKILL - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -20. f
8、read返回值的含义是 B A 读取的字节数B 读取的对象数C 缓冲区的首地址D 0 size_t fread void *ptr, size_t size, size_t nmemb, FILE *stream; 二、简答题 30 分 1.请描述进程和程序的区分?(5 分)进程和程序的区分程序是 静态 的,它是一些储存在磁盘 上的指令的有序集合,没有任何执行的概念进程是一个 动态 的概念,它是程序 进程是一个独立的 可调度的任务执行的过程 ,包括创建、调度和消亡进程是一个抽象实体;当系统在执行某个程序时,安排和释放 的各种资源进程是一个程序的 一次执行的过程进程是程序执行和资源治理的 最小单
9、位2. 指出静态库和共享库的区分 使用方法,对程序的影响 (5 分 静态库在程序 编译时会被连接到目标代码中,程序 运行时将不再需要该 静态库,因此体积较大 ;动态库在程序编译时并 不会被连接 到目标代码中, 而是在程序运行是才被载入,因此在程序 运行时仍需要动态库存在,因此代码 体积较小 ;3. 写出设置信号处理函数和用户定义的信号处理函数的原型 5 分 void *signalint signum, void *handlerintint; typedef void *sighandler_tint; sighandler_t signalint signum, sighandler_t
10、handler;void driver_handlerint signo; void *handler int ; handler,一个指向函数的指针,该函数有一个 int 参数,返回 void ;T *signal int signo, P, P = void *handler int ;signal,一个函数,该函数有 2 个参数( signo, P),返回类型 T 的指针;void T int , T = signal int signo, P T,一个函数,该函数有一个 int 参数,返回 void ;4. 程序代码如下,请按执行次序写出输出结果 10 分 int main pid_t
11、 pid1,pid2; /子进程处理程序ifpid1=fork = = 0 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 7 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -sleep3; printf “ info1 from child process_1n ”; exit0; printf “ info2 from child process_1n ”; else ifpid2=fork = = 0 /子进程 2 sleep1; printf “ inf
12、o1 from child process_2n ” ; exit0; else waitNULL; waitNULL; printf “ info1 from parent processn ”; printf “ info2 from parent process ”; _exit0; info1 from child process_2 info1 from child process_1 info1 from parent process5.列出任意四种进程间通信的方式5 分 传统的进程间通信方式 无名管道 pipe 、出名管道 fifo 和信号 signal System V IPC
13、 对象 共享内存 share memory、消息队列 message queue和信号灯 semaphore BSD 套接字 socket 三、综合题 30 分 1.指出创建守护进程的步骤5 分 P65 细心整理归纳 精选学习资料 2.1 创建子进程,父进程退出fork , exit 第 4 页,共 7 页 2 在子进程中创建新会话setsid 3 转变当前目录为根目录chdir 4 重设文件权限掩码umask(0)5 关闭文件描述符close 请画出 Linux 中进程的状态切换图5 分 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳
14、总结 精品学习资料 - - - - - - - - - - - - - - -3. 用文件 IO 分别实现标准IO 中的 r, r+, w, w+, a, a+, 文件名由 argv1 传入程序 . O_RDONL Y, O_WRONL Y, O_RDWR, O_CREA T, O_TRUNC, O_APPEND10 分 int open const char *pathname, int flags, int perms; r:open(argv1,O_RDONL Y); r+: open argv1,O_RDWR; w: openargv1,O_WRONL Y | O_CREAT | O_
15、TRUNC,0666; w+: openargv1,O_RDWR | O_CREAT | O_TRUNC,0666; a: openargv1,O_WRONL Y | O_CREAT | O_APPEND,0666; a+: openargv1,O_RDWR | O_CREAT | O_APPEND,0666; 4. 编写程序实现如下功能 10 分:reader.c 从 argv1 所指定的文件中读取内容,依次写到管道/home/linux/myfifo 中writer.c 从管道 /home/linux/myfifo 中读取内容,写到 argv1 所指定的文件中并储存细心整理归纳 精选学习资
16、料 代码中可省略头文件,/home/linux/myfifo无需创建 第 5 页,共 7 页 - - - - - - - - - - - - - - - - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -Read.c int mainint argc, const char *argv int fd,fd_src; char buf32; int bytes; ifargc 2 printfUsage %s src_filen,argv0; return -1; iffd = open/home/linux/myfifo,
17、O_WRONLY 0 perrorfail to open; return -1; if fd_src = openargv1,O_RDONLY 0 writefd,buf,bytes; closefd; closefd_src; return 0; Write.c int mainint argc, const char *argv int fd,fd_dest; char buf32; int bytes; ifargc 2 printfUsage %s dest_filen,argv0; return -1; iffd = open/home/linux/myfifo,O_RDONLY
18、0 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 7 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -perrorfail to open; return -1; if fd_dest = openargv1,O_WRONLY | O_CREAT | O_TRUNC,0666 0 writefd_dest,buf, bytes ; closefd; closefd_dest; return 0; 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 7 页 - - - - - - - - -