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
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; }