04IO进程测试题含答案.docx

上传人:b****4 文档编号:26782765 上传时间:2023-06-22 格式:DOCX 页数:8 大小:40.93KB
下载 相关 举报
04IO进程测试题含答案.docx_第1页
第1页 / 共8页
04IO进程测试题含答案.docx_第2页
第2页 / 共8页
04IO进程测试题含答案.docx_第3页
第3页 / 共8页
04IO进程测试题含答案.docx_第4页
第4页 / 共8页
04IO进程测试题含答案.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

04IO进程测试题含答案.docx

《04IO进程测试题含答案.docx》由会员分享,可在线阅读,更多相关《04IO进程测试题含答案.docx(8页珍藏版)》请在冰豆网上搜索。

04IO进程测试题含答案.docx

04IO进程测试题含答案

一、选择题(每题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]共享内存(本身不提供同步机制,可自行添加信号量实现同步)

信号量:

解决进程\线程之间的同步与互斥问题的一种通信机制:

信号量变量和这个变量的等待队列、两个原子操作(PV).

6.下列哪个函数无法传递进程结束时的状态(A)

[A]close[B]exit[C]_exit[D]return

voidexit(intstatus)

7.以下哪种用法可以等待接收进程号为pid的子进程的退出状态(A)P59

[A]waitpid(pid,&status,0)[B]waitpid(pid,&status,WNOHANG)

[C]waitpid(-1,&status,0)[D]waitpid(-1,&status,WNOHANG)

WNOHANG:

子进程没结束,不阻塞立即返回,返回值为0。

0:

阻塞父进程,直到子进程退出。

8.WhatkindofIPChasthehighestefficiency(B)

[A]semaphore

[B]sharedmemory

[C]fifo

[D]messagequeue

Esignal

9.下列对无名管道描述错误的是(C)

[A]半双工的通信模式

[B]有固定的读端和写端

[C]可以使用lseek函数

[D]只存在于内存中

10.下列对于有名管道描述错误的是(D)

[A]可以用于互不相关的进程间

[B]通过路径名来打开有名管道

[C]在文件系统中可见

[D]管道内容保存在磁盘上

11.下列不属于用户进程对信号的响应方式的是(B)

[A]忽略信号[B]保存信号[C]捕捉信号[D]按缺省方式处理(1终止SIGINTCtrl+c,SIGINTQUITCtrl+\。

2暂停SIGSTOP。

3停止SIGTSTPCtrl+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对象的是(A)

[A]管道[B]共享内存[C]消息队列[D]信号灯

IPC对象通过它的标识符来引用和访问,这个标识符是一个非负整数,它唯一的标识了一个IPC对象,这个IPC对象可以是消息队列或信号量或共享存储器中的任意一种类型

15.如果键盘输入为abcdef,程序如下所示,打印结果应该是(A)

charbuffer[6];

……

fgets(buffer,6,stdin);printf(“%s”,buffer);

[A]abcde[B]abcdef[C]abcdef后出现乱码[D]段错误

16.用open()创建新文件时,若该文件存在则可以返回错误信息的参数是(B)

[A]O_CREAT(创建新文件)[B]O_EXCL[C]O_TRUNC(删除原有数据)[D]O_NOCTTY

intopen(constchar*pathname,intflags,intperms)

17.下列不是用户进程的组成部分的是(D)

[A]正文段[B]用户数据段[C]系统数据段[D]elf段

进程是由进程控制块、程序段、数据段三部分组成

18.以下哪种方法无法查看进程的信息(C)

[A]ps[B]查看/proc目录[C]kill[D]top

Linux系统中每一个进程都会有/proc文件系统下的与之对应的一个目录(init进程信息存放在/proc/1目录下)。

19.默认情况下,不会终止进程的信号是(D)

[A]SIGINT[B]SIGKILL[C]SIGALRM[D]SIGCHLD

20.fread()返回值的含义是(B)

[A]读取的字节数[B]读取的对象数[C]缓冲区的首地址[D]0

size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream);

二、简答题(30分)

1.请描述进程和程序的区别(5分)

进程和程序的区别

程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念

进程是一个动态的概念,它是程序执行的过程,包括创建、调度和消亡

进程是一个独立的可调度的任务

进程是一个抽象实体。

当系统在执行某个程序时,分配和释放的各种资源

进程是一个程序的一次执行的过程

进程是程序执行和资源管理的最小单位

2.指出静态库和共享库的区别(使用方法,对程序的影响)(5分)

静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库,因此体积较大。

动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在,因此代码体积较小。

3.写出设置信号处理函数和用户定义的信号处理函数的原型(5分)

void(*signal(intsignum,void(*handler)(int)))(int);

typedefvoid(*sighandler_t)(int);

sighandler_tsignal(intsignum,sighandler_thandler);

voiddriver_handler(intsigno);

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分)

intmain()

{pid_tpid1,pid2;

if((pid1=fork())==0)

用文件IO分别实现标准IO中的(r,r+,w,w+,a,a+),文件名由argv[1]传入程序.

(O_RDONLY,O_WRONLY,O_RDWR,O_CREAT,O_TRUNC,O_APPEND)(10分)

intopen(constchar*pathname,intflags,intperms);

r:

open(argv[1],O_RDONLY);

r+:

open(argv[1],O_RDWR);

w:

open(argv[1],O_WRONLY|O_CREAT|O_TRUNC,0666);

w+:

open(argv[1],O_RDWR|O_CREAT|O_TRUNC,0666);

a:

open(argv[1],O_WRONLY|O_CREAT|O_APPEND,0666);

a+:

open(argv[1],O_RDWR|O_CREAT|O_APPEND,0666);

4.编写程序实现如下功能(10分):

从argv[1]所指定的文件中读取内容,依次写到管道

/home/linux/myfifo中

从管道/home/linux/myfifo中读取内容,写到argv[1]所指定

的文件中并保存

代码中可省略头文件,/home/linux/myfifo无需创建

 

intmain(intargc,constchar*argv[])

{

intfd,fd_src;

charbuf[32];

intbytes;

if(argc<2)

{

printf("Usage%ssrc_file\n",argv[0]);

return-1;

}

if((fd=open("/home/linux/myfifo",O_WRONLY))<0)

{

perror("failtoopen");

return-1;

}

if((fd_src=open(argv[1],O_RDONLY))<0)

{

perror("failtoopen");

return-1;

}

while((bytes=read(fd_src,buf,32))>0)

{

write(fd,buf,bytes);

}

close(fd);

close(fd_src);

return0;

}

 

intmain(intargc,constchar*argv[])

{

intfd,fd_dest;

charbuf[32];

intbytes;

if(argc<2)

{

printf("Usage%sdest_file\n",argv[0]);

return-1;

}

if((fd=open("/home/linux/myfifo",O_RDONLY))<0)

{

perror("failtoopen");

return-1;

}

if((fd_dest=open(argv[1],O_WRONLY|O_CREAT|O_TRUNC,0666))<0)

{

perror("failtoopen");

return-1;

}

while((bytes=read(fd,buf,32))>0)

{

write(fd_dest,buf,bytes);

}

close(fd);

close(fd_dest);

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

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

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