04-IO进程测试习题(含答案)_第1页
04-IO进程测试习题(含答案)_第2页
04-IO进程测试习题(含答案)_第3页
04-IO进程测试习题(含答案)_第4页
04-IO进程测试习题(含答案)_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 信号(异步通信方式,中断机制的模拟) D 共享内存(本身不提供同步机制,可自行添加信号量 实

2、现同步) 信号量:解决进程线程之间的同步与互斥问题的一种通信机制:信号量变量和这个变量的等待队列、两个原子操作(PV). 6. 下列哪个函数无法传递进程结束时的状态 ( A ) Aclose B exit C _exit D return void exit( int status) 7. 以下哪种用法可以等待接收进程号为pid的子进程的退出状态 ( A ) P59 A waitpid(pid, &status, 0) B waitpid(pid, &status, WNOHANG) C waitpid(-1, &status, 0) D waitpid(-1, &am

3、p;status, WNOHANG)WNOHANG:子进程没结束,不阻塞立即返回,返回值为0。0:阻塞父进程,直到子进程退出。 8. What kind of IPC has the highest efficiency? (B)A semaphoreB sharedmemoryC fifoD message queueE signal 9. 下列对无名管道描述错误的是 ( C ) A 半双工的通信模式 B 有固定的读端和写端C 可以使用lseek函数D 只存在于内存中 10.下列对于有名管道描述错误的是 ( D )A 可以用于互不相关的进程间 B 通过路径名来打开有名管道C 在文件系统中可见

4、 D 管道内容保存在磁盘上 11. 下列不属于用户进程对信号的响应方式的是 ( B ) A 忽略信号 B 保存信号 C 捕捉信号 D 按缺省方式处理( 1终止SIGINT Ctrl+c,SIGINTQUIT Ctrl+。2暂停SIGSTOP。 3停止SIGTSTP Ctrl+z.。4忽略 SIGCHILD) 12. 不能被用户进程屏蔽的信号是 ( B ) A SIGINT B SIGSTOP/SIGKILL C SIGQUIT D SIGILL 非法指令时发出 13. 下列哪个是不带缓存的( C ) A stdin B stdout C stderr D 都不是 14. 下列不属于IPC对象的

5、是 (A ) A 管道 B 共享内存 C 消息队列 D 信号灯IPC对象通过它的标识符来引用和访问,这个标识符是一个非负整数,它唯一的标识了一个IPC对象,这个IPC对象可以是消息队列或信号量或共享存储器中的任意一种类型 15. 如果键盘输入为abcdef,程序如下所示,打印结果应该是( A ) char buffer6; fgets(buffer, 6, stdin); /遇到n 或 读取了size 1 个字符后返回. printf(“%s”, buffer); A abcde B abcdef C abcdef 后出现乱码 D 段错误 16. 用open( )创建新文件时,若该文件存在则可

6、以返回错误信息的参数是 ( 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. 以下哪种方法无法查看进程的信息 ( C ) A ps B 查看/proc目录 C kill D topLinux系统中每一个进程都会有/proc文件系统下的与之对应的一个目录( i

7、nit进程信息存放在/proc/1 目录下)。 19. 默认情况下,不会终止进程的信号是 ( D ) A SIGINT B SIGKILL C SIGALRM D SIGCHLD20. fread()返回值的含义是 ( B ) A 读取的字节数 B 读取的对象数 C 缓冲区的首地址 D 0size_t fread (void *ptr, size_t size, size_t nmemb, FILE *stream);二、 简答题(30分)1. 请描述进程和程序的区别(5分) 进程和程序的区别程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念进程是一个动态的概念,它是程序执

8、行的过程,包括创建、调度和消亡进程是一个独立的可调度的任务 进程是一个抽象实体。当系统在执行某个程序时,分配和释放的各种资源进程是一个程序的一次执行的过程 进程是程序执行和资源管理的最小单位2. 指出静态库和共享库的区别(使用方法,对程序的影响) (5分)静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库,因此体积较大。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在,因此代码体积较小。3. 写出设置信号处理函数和用户定义的信号处理函数的原型 (5分)void (*signal(int signum, void (*han

9、dler)(int)(int);typedef void (*sighandler_t)(int);sighandler_t signal(int signum, sighandler_t handler);void driver_handler(int signo);void (*handler)(int);  handler,一个指向函数的指针,该函数有一个int参数,返回void。T *signal(int signo, P), P = void (*handler)(int); 

10、; signal,一个函数,该函数有2个参数(signo, P),返回类型T的指针。 void (T) (int),T = signal(int signo, P) T,一个函数,该函数有一个int参数,返回void。4. 程序代码如下,请按执行顺序写出输出结果 (10分)int main() pid_t pid1,pid2; if(pid1=fork() = = 0) /子进程处理程序 sleep(3); printf(“info1 from child process_1n”); exit(

11、0); printf(“info2 from child process_1n”); else if(pid2=fork() = = 0) /子进程2 sleep(1); printf(“info1 from child process_2n”); exit(0); else wait(NULL); wait(NULL); printf(“info1 from parent processn”); printf(“info2 from parent process”); _exit(0); info1 from child process_2info1 from child process_1

12、info1 from parent process5. 列出任意四种进程间通信的方式(5分) 传统的进程间通信方式 无名管道(pipe)、有名管道(fifo)和信号(signal) System V IPC对象 共享内存(share memory)、消息队列(message queue)和信号灯(semaphore) BSD 套接字(socket)三、 综合题(30分)1. 指出创建守护进程的步骤(5分)P651) 创建子进程,父进程退出 fork(),exit() 2) 在子进程中创建新会话 setsid()3) 改变当前目录为根目录 chdir()4) 重设文件权限掩码 umask(0)

13、5) 关闭文件描述符close()2. 请画出Linux中进程的状态切换图(5分) 3. 用文件IO分别实现标准IO中的(r, r+, w, w+, a, a+),文件名由argv1传入程序. (O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_TRUNC, O_APPEND)(10分) int open (const char *pathname, int flags, int perms);r: open(argv1,O_RDONLY);r+: open (argv1,O_RDWR);w: open(argv1,O_WRONLY | O_CREAT | O_TR

14、UNC,0666);w+: open(argv1,O_RDWR | O_CREAT | O_TRUNC,0666);a: open(argv1,O_WRONLY | O_CREAT | O_APPEND,0666);a+: open(argv1,O_RDWR | O_CREAT | O_APPEND,0666);4. 编写程序实现如下功能(10分):reader.c 从argv1所指定的文件中读取内容,依次写到管道/home/linux/myfifo中writer.c 从管道/home/linux/myfifo中读取内容,写到argv1所指定的文件中并保存代码中可省略头文件,/home/lin

15、ux/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("/home/linux/myfifo",O_WRONLY) < 0)perror("fail to open");return -1;if(fd_src = open(argv1,O_RDONLY) <

16、; 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) &l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论