达内C++培训第二次月考(附答案)(4)

2019-02-16 00:29

C.

int fd = open(\ if(fd==-1){

perror(\创建文件失败\ exit(-1);

}

D.

int fd = open(\ if(fd==-1){

perror(\创建文件失败\ exit(-1);

}

正确答案:D

35. 阅读如下代码: int fd[2] = {}; pipe(fd);

int pid = fork(); if(pid==0){//子进程 (空白处1) while(1){ int x;

if(read(fd[0], &x, sizeof(x))<=0)break; printf(\ fflush(0); }

close(fd[0]); exit(0); }

(空白处2) int i;

for(i=0; i<100; i++){

write(fd[1], &i, sizeof(int)); usleep(200000); }

close(fd[1]);

空白处1和空白处2应该填上的代码是?

A. 什么都不需要填

B. close(fd[1]);和close(fd[0]); C. close(fd[0]);和close(fd[1]); D. close(fd[1]);和close(fd[1]); 正确答案:B

36. 阅读如下代码,完成下面 5 题: #include \#include \#include \

void VirtualInfo( ){

CHAR* pszBuffer = (CHAR *)VirtualAlloc( NULL, 1024*1024*1024, MEM_RESERVE, PAGE_READWRITE );

VirtualFree( pszBuffer, 0, MEM_DECOMMIT ); }

void Virtual_Commit( ){

CHAR *pszBuff = (CHAR *)VirtualAlloc( NULL, 4096, MEM_COMMIT, PAGE_READWRITE );

strcpy( pszBuff, \ printf( \

VirtualFree( pszBuff, 0, MEM_RELEASE ); }

void Virtual_Reserve( ){

CHAR *pszBuff = (CHAR *)VirtualAlloc( NULL, 4096, MEM_RESERVE, PAGE_READWRITE );

VirtualAlloc( pszBuff, 1024, MEM_COMMIT, PAGE_READWRITE ); strcpy( pszBuff, \ printf( \

VirtualFree( pszBuff, 0, MEM_RELEASE ); }

int main(int argc, char* argv[])

{

VirtualInfo( ); Virtual_Commit( ); Virtual_Reserve( ); return 0; }

(1). 关于这段代码完成的功能最准确的描述是?

A. 这段代码是关于虚拟内存管理的 B. 这段代码是关于堆内存管理的 C. 这段代码是关于栈内存管理的 D. 这段代码是关于内存映射文件的 正确答案:A (2).

CHAR* pszBuffer =

(CHAR *)VirtualAlloc( NULL, 1024*1024*1024,MEM_RESERVE, PAGE_READWRITE ) 赋值函数如果改为VirtualAlloc( NULL, 1024*1024*1024,MEM_COMMIT, PAGE_READWRITE ),有何区别:

A. 没有区别

B. MEM_RESERVE只要地址,不要物理内存,而MEM_COMMIT是都占用 C. MEM_RESERVE是释放内存,而MEM_COMMIT是申请内存

D. MEM_RESERVE只要物理内存,不占用地址,而MEM_COMMIT是都占用 正确答案:B

(3). VirtualFree( pszBuffer, 0, MEM_DECOMMIT ) 函数如果改为 VirtualFree( pszBuffer, 0, MEM_RELEASE ),有何区别:

A. 没有区别

B. MEM_DECOMMIT是再次内存申请,MEM_RELEASE释放内存

C. MEM_DECOMMIT只释放内存,不释放地址,MEM_RELEASE地址和内存都释放 D. MEM_DECOMMIT只释放地址,不释放内存,MEM_RELEASE地址和内存都释放 正确答案:C

(4). 函数Virtual_Commit对于内存的使用方式是:

A. 内存地址和物理内存一起申请,并同时释放 B. 内存地址和物理内存一起申请,但分别释放 C. 内存地址和物理内存分别申请,但同时释放 D. 内存地址和物理内存分别申请,分别释放 正确答案:A

(5). 函数Virtual_ Reserve对于内存的使用方式是:

A. 内存地址和物理内存一起申请,并同时释放 B. 内存地址和物理内存一起申请,但分别释放 C. 内存地址和物理内存分别申请,但同时释放 D. 内存地址和物理内存分别申请,分别释放 正确答案:C 37.

#include #include #include #include #include #include #include #include

void copyFile(const char*from,const char*to){ //判断一下传进来的参数是不是空 (空白5);

int ff = open(from,O_RDONLY);

if(-1==ff){perror(\打开原文件失败\\n\);return ;} int ft = open(to,O_RDWR|O_CREAT,0666);

if(-1==ft){perror(\打开目标文件失败\\n\);return ;} (空白1); close(ff); close(ft); }

void backup(const char*from,const char*to){ //判断一下传进来的参数是不是空 (空白5);

//打开要被复制的文件夹 DIR *q = opendir(from); if(NULL==q){

perror(\打开文件夹失败\\n\); return ; }

//创建一个文件夹 mkdir(to,0777);

struct dirent *p = NULL; struct stat s;

char pathFrom[256] = {}; char pathTo[256] = {};

strcat(strcpy(pathFrom,from),\); strcat(strcpy(pathTo,to),\);

char *pf = pathFrom + strlen(pathFrom); char *pt = pathTo + strlen(pathTo); while(NULL!=(p = readdir(q))){ strcpy(pf,p->d_name); strcpy(pt,p->d_name); lstat(pathFrom,&s);

if(S_ISREG(s.st_mode)){ //判断一下是不是.c/.h文件 char* pff = pf+strlen(pf)-2; (空白4); {

copyFile(pathFrom,pathTo); }else{

continue ; } }

else if(S_ISDIR(s.st_mode)){ (空白2); } }

closedir(q); }

int main(int argc,char *argv[]){ (空白3); return 0; }


达内C++培训第二次月考(附答案)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015年中国水磨石板材市场运行态势报告 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: