linux C 高级程序设计试卷

合集下载

c程序设计试题及答案

c程序设计试题及答案

c程序设计试题及答案一、选择题(每题2分,共20分)1. 下列选项中,哪一个是C语言的标准输入输出库函数?A. printf()B. scanf()C. getchar()D. A和B答案:D2. 在C语言中,以下哪个关键字用于定义一个函数?A. intB. voidC. functionD. return答案:A3. 以下哪个语句用于结束C程序的执行?A. break;B. continue;C. exit();D. return;答案:C4. C语言中,哪个类型用于表示字符?A. charB. stringC. characterD. letter答案:A5. 在C语言中,以下哪个运算符用于判断两个值是否相等?A. ==B. !=C. <D. >答案:A6. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. +D. -答案:A7. 在C语言中,哪个关键字用于定义一个数组?A. arrayB. listC. vectorD. None of the above答案:D8. 下列哪个选项是C语言中的循环结构?A. ifB. whileC. switchD. case答案:B9. 在C语言中,哪个关键字用于声明一个变量为静态存储类别?A. staticB. autoC. registerD. extern答案:A10. 下列哪个选项是C语言中的位运算符?A. &B. |C. ^D. All of the above答案:D二、填空题(每空1分,共10分)1. 在C语言中,使用________关键字可以定义一个结构体。

答案:struct2. 一个C语言程序的执行从________函数开始。

答案:main3. 在C语言中,________运算符用于取反一个逻辑值。

答案:!4. 一个C语言数组的索引是从________开始的。

答案:05. 使用________函数可以在C语言中动态分配内存。

嵌入式Linux C语言应用开发试题及答案

嵌入式Linux C语言应用开发试题及答案

嵌入式Linux C语言应用开发试题及答案一:选择题1.下面不是对Linux操作系统特点描述的是( B )。

[A] 良好的可移植性[B] 单用户[C] 多用户[D] 多任务2.查看创建目录命令mkdir的帮助文档,可以使用命令( D)。

[A] mkdir –h [B] help mkdir [C] mkdir -p [D] man mkdir3.在C语言中,要求运算数必须是整型的运算符是( D )。

[A] / [B] ++ [C] != [D] %4.C语言程序的三种基本程序是( A )。

[A] 顺序结构,选择结构,循环结构[B] 递归结构,循环结构,转移结构[C] 嵌套结构,递归结构,顺序结构[D] 循环结构,转移结构,顺序结构5.数据结构包含的内容不包括(a)A.线性结构B.存储结构C.逻辑结构D.数据运算6.向一个单链表linklist中的节点t后面插入一个节点p,下列操作正确的是(a)A.p->next = t->next;t->next = p;B.t->next = p->next;t->next = p;C.t->next = p;p->next = t->next;D.t->next = p;t->next = p->next;7.下列哪种打开文件的方式不能修改文件已有的内容( B )[A] r+ [B] r [C] w+ [D] a+8.以下哪种不是进程的状态( B )[A] 运行态[B] 锁定态[C] 睡眠态[D] 停止态9.常用来进行多任务同步的机制是( B )[A]管道[B] 信号量[C]信号[D]共享内存10.下列对于有名管道描述错误的是( D )[A] 可以用于互不相关的进程间[B] 通过路径名来打开有名管道[C] 在文件系统中可见[D] 管道内容保存在磁盘上11.不能被用户进程屏蔽的信号是( B )[A] SIGINT [B] SIGSTOP [C] SIGQUIT [D] SIGILL12.fread()返回值的含义是( B )[A] 读取的字节数[B] 读取的对象数[C] 缓冲区的首地址[D] 013.以下不属于socket的类型的是 ( )。

Linux操作系统下的C语言开发环境搭建测试题

Linux操作系统下的C语言开发环境搭建测试题

Linux操作系统下的C语言开发环境搭建测试题(答案见尾页)一、选择题1. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装GCC编译器B. 设置环境变量C. 编译和运行C程序D. 配置终端2. 在Linux操作系统中,以下哪个命令可以用来编译和运行C程序?A. gccB. g++C. chmodD. make3. 在Linux操作系统中,如何修改默认的编译器路径?A. 修改PATH环境变量B. 使用export命令C. 编辑/etc/profile文件D. 修改gcc的配置文件4. 在Linux操作系统中,安装了GCC编译器后,如何验证其安装成功?A. 输入gcc --version命令B. 输入gcc -v命令C. 输入gcc --configure命令D. 输入gcc -E命令5. 在Linux操作系统中,如何配置终端以方便进行C语言编程?A. 更改终端的提示符B. 安装tmux或screen工具C. 配置bashrc文件6. 在Linux操作系统中,如何使用GDB调试器调试C程序?A. 安装gdb软件包B. 编译程序时添加-g选项C. 使用gdb命令启动程序D. 查看程序内存布局7. 在Linux操作系统中,如何查看源代码文件的内容?A. 使用cat命令B. 使用less命令C. 使用grep命令D. 使用find命令8. 在Linux操作系统中,如何使用vi编辑器编辑C语言源代码文件?A. 进入vi编辑器B. 编辑文件内容C. 保存文件并退出vi编辑器D. 检查文件是否已保存9. 在Linux操作系统中,如何通过FTP上传和下载文件?A. 使用ftp命令B. 使用sftp命令C. 使用scp命令D. 使用ls命令10. 在Linux操作系统中,如何设置用户权限以确保C语言源代码的安全?A. 使用chmod命令B. 使用chown命令C. 使用umask命令D. 使用acl命令11. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?B. 设置环境变量C. 配置编译选项D. 编译和运行C程序12. 在Linux系统下,如何修改一个文件的权限使其可读可写?A. chmod 666 filenameB. chmod 777 filenameC. chmod 644 filenameD. chmod 755 filename13. 在Linux系统下,使用以下哪个命令可以查看文件的详细信息,如文件大小、创建日期等?A. ls -lB. df -hC. tar -xvf file.tarD. stat filename14. 在Linux系统下,如何使用vi编辑器打开一个文件?A. vi filenameB. vim filenameC. nano filenameD. emacs filename15. 在Linux系统下,安装了GCC编译器后,如何验证其是否正确安装?A. echo $PATHB. which gccC. gcc --versionD. all of the above16. 在Linux系统下,如何创建一个新的目录并进入该目录?A. mkdir new_directoryB. cd new_directoryC. rmdir new_directoryD. mkdir -p new_directory17. 在Linux系统下,如何使用grep命令在文本中搜索特定的字符串?A. grep "search_string" filenameB. grep "search_string" filename | lessC. grep "search_string" filename | moreD. all of the above18. 在Linux系统下,如何修改一个文件的换行符为LF(Unix风格)?A. dos2unix filenameB. unix2dos filenameC. cat filename | tr '' '' > filenameD. all of the above19. 在Linux系统下,如何使用find命令查找特定文件?A. find / -name "filename_pattern"B. find . -type f -name "filename_pattern"C. find / -name "filename_pattern" -printD. all of the above20. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装编译器B. 配置编译环境变量C. 安装文本编辑器D. 编写、编译和运行C源代码21. 在Linux操作系统下,以下哪个命令可以用来编译和运行C语言源代码?A. gccB. g++C. chmodD. make22. 在Linux操作系统下,以下哪个命令可以用来安装一个新的C语言库?A. apt-getB. yumC. pacman23. 在Linux操作系统下,以下哪个命令可以用来查看源代码的层次结构?A. catB. grepC. treeD. less24. 在Linux操作系统下,以下哪个命令可以用来创建一个新目录?A. mkdirB. rmdirC. touchD. cp25. 在Linux操作系统下,以下哪个命令可以用来删除一个文件?A. rmB. mvC. rmdirD. cp26. 在Linux操作系统下,以下哪个命令可以用来复制文件或目录?A. cpB. mvC. rmD. ln27. 在Linux操作系统下,以下哪个命令可以用来查看文件的内容?A. catB. grepC. lessD. head28. 在Linux操作系统下,以下哪个命令可以用来查找文件?A. findB. locateD. man29. 在Linux操作系统下,以下哪个命令可以用来查看当前目录的内容?A. lsB. cdC. pwdD. man30. Linux操作系统下,C语言开发环境的搭建需要哪些步骤?A. 安装GCC编译器B. 配置内核头文件C. 安装文本编辑器D. 配置终端环境31. 在Linux操作系统下,如何验证C语言编译成功?A. 编译一个简单的C源代码,观察是否有语法错误B. 使用命令行进入编译后的目录,查看生成的可执行文件C. 在终端中输入编译命令,观察是否有错误信息D. 将编译后的程序在另一个系统中运行,检查功能是否实现32. Linux操作系统下,C语言开发常用的文本编辑器有哪些?A. VimB. EmacsC. nanoD. Kate33. 在Linux操作系统下,如何配置终端环境以便于C语言编程?A. 设置默认编码为UTF-8B. 配置PATH环境变量,确保编译器路径已添加C. 安装并配置版本控制工具(如Git)D. 配置别名,提高编程效率34. 在Linux操作系统下,C语言开发中常用的调试工具有哪些?A. GDB调试器B. DDD调试工具C. Valgrind内存检测工具D. printf()函数调试35. Linux操作系统下,C语言开发环境的搭建过程中,如何配置网络连接?A. 修改网络配置文件,设置静态IP地址B. 关闭防火墙,确保端口畅通C. 配置DNS服务器,解析域名D. 使用Wireshark工具监控网络流量36. 在Linux操作系统下,C语言开发环境中,如何管理项目文件?A. 使用版本控制工具(如Git)进行项目管理B. 使用文件系统树形结构管理项目文件C. 使用目录和文件名来管理项目文件D. 使用标签系统管理项目文件37. Linux操作系统下,C语言开发环境的搭建完成后,如何优化编译速度?A. 升级GCC编译器到最新版本B. 优化编译选项,减少编译时间C. 使用增量编译,避免重复编译D. 使用并行编译,提高编译速度38. 在Linux操作系统下,C语言开发环境的搭建过程中,如何安装必要的库文件?A. 使用包管理器(如apt或yum)安装库文件B. 从官方网站下载库文件并手动安装C. 从源代码编译库文件并安装D. 使用静态链接库文件,减少动态链接的内存开销39. Linux操作系统下,C语言开发环境的搭建完成后,如何进行代码测试和调试?A. 使用GDB调试器进行单步调试B. 使用DDD调试工具查看内存状态C. 使用printf()函数打印变量值进行调试D. 使用单元测试框架进行自动化测试40. Linux操作系统下,C语言开发环境的搭建需要以下哪些步骤?A. 安装GCC编译器B. 配置环境变量C. 安装文本编辑器D. 编译和运行C程序41. 在Linux操作系统下,以下哪个命令可以用来查看系统中的所有进程?A. ps -efB. topC. freeD. all42. 在Linux操作系统下,如何修改一个文件的权限使得文件所有者具有读写权限,其他用户只具有读权限?A. chmod 644 filenameB. chmod 755 filenameC. chmod 664 filenameD. chmod 777 filename43. 在Linux操作系统下,使用以下哪个命令可以查看当前目录下的隐藏文件?A. ls -aB. ls -lC. ls -hD. ls -d44. 在Linux操作系统下,如何安装一个新软件包?A. apt-get updateB. yum install package_nameC. pacman -S package_nameD. brew install package_name45. 在Linux操作系统下,如何使用grep命令查找包含特定字符串的文件?A. grep "search_string" filenameB. grep "search_string" /path/to/filenameC. grep "search_string" $(find /path/to/search -type f)D. grep "search_string" /path/to/search/*46. 在Linux操作系统下,如何修改文件的所有者和组?A. chown new_owner:new_group filenameB. chown new_owner:new_group /C. chown new_owner:new_group *D. chown new_owner:new_group .47. 在Linux操作系统下,如何创建一个新的用户组?A. groupadd group_nameB. groupadd -g GID group_nameC. groupadd -G GID group_nameD. groupadd -p group_name48. 在Linux操作系统下,如何设置Shell提示符?A. export PS1="\u@\h:\w\$ "B. export PS1="\u@\h:\w\$ "C. export PS1="\u@\h:\w\\$ "D. export PS1="\u@\h:\w\$ "二、问答题1. 请简述在Linux操作系统下搭建C语言开发环境的步骤。

c高级程序设计试题及答案

c高级程序设计试题及答案

c高级程序设计试题及答案一、选择题(每题2分,共20分)1. 在C语言中,下列哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列哪个函数用于将字符串s复制到字符串t中?A. strcat(s, t)B. strcpy(s, t)C. strcmp(s, t)D. strncat(s, t)答案:B3. 在C语言中,下列哪个运算符用于执行逻辑与操作?A. &&B. ||C. !D. ~答案:A4. 下列哪个选项是正确的C语言注释?A. // This is a single line commentB. /* This is a single line comment */C. // This is a multi-line commentD. /* This is a multi-line comment */答案:A5. 在C语言中,下列哪个函数用于打开一个文件?A. fopenB. fcloseC. freopenD. remove答案:A6. 下列哪个选项是C语言中的合法整型常量?A. 123B. 0x1AC. 1.23D. 0123答案:A7. 下列哪个关键字用于定义一个函数?A. intB. voidC. returnD. struct答案:A8. 在C语言中,下列哪个运算符用于执行算术右移操作?A. <<B. >>C. <=D. >=答案:B9. 下列哪个函数用于将整数n转换为字符串并存储在s指向的数组中?A. sprintf(s, "%d", n)B. scanf(s, "%d", &n)C. printf("%d", n)D. scanf("%d", &n)答案:A10. 在C语言中,下列哪个选项是正确的多行字符串字面量?A. "Hello, world"B. "Hello,\nworld"C. "Hello, " "world"D. "Hello, " 'world'答案:B二、填空题(每题2分,共20分)1. 在C语言中,使用________关键字可以定义一个指针。

linux及C试题(含答案)

linux及C试题(含答案)

linux及C试题(含答案)华清远见嵌入式学院《Linux及C》考试题(B卷)一、选择题(23题,每空2分,共46分)1.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项(D )。

A.-mB.-dC.-fD.-p2.任何时候用户需要回到用户主目录时可以使用命令 ( A ) 。

A. cdB. pwdC. pathD. cd .3.将当前目录下的文件shell.sh移动到目录/home/linux下的命令为( B ) 。

A. cp shell.sh /home/linuxB. mv shell.sh /home/linuxC. ls shell.sh / home/linux/she ll.shD. mv /root/shell.sh /home/linux/shell.sh4.下面( C )命令不能用来显示文件的内容。

[A] more [B] less [C] find [D] cat5./etc/shadow文件中存放( B )。

A.用户账号基本信息B.用户口令的加密信息C.用户组信息D.文件系统信息6.LINUX所有服务的启动脚本都存放在( B )目录中。

A./etc/rc.d/init.dB./etc/init.dC./etc/rc.d/rcD./etc/rc.d7.若要将当前目录中的myfile.txt文件压缩成myfile.txt.tar.gz,则实现的命令为(C )。

A.tar -cvf myfile.txt myfile.txt.tar.gzB.tar -zcvf myfile.txt myfile.txt.tar.gzC.tar -zcvf myfile.txt.tar.gz myfile.txtD.tar -cvf myfile.txt.tar.gz myfile.txt8.以下程序的运行结果为( C )#include#includeint SubCount(char *dest, int count){strcpy(dest,"555");count++;return 0;}int main(){int count = 3;char caBuf[8];SubCount(caBuf,count);printf("%d\n",count);return 0;}[A] 8[B] 4[C] 3 [D] 59.下面的代码输出是( A )void foo(void){unsigned int a = 6; int b = -20;(a+b > 6) ? puts("> 6") : puts("<= 6");}[A] > 6 [B] <= 610.C语言中,逻辑“真”等价于( C )。

linux c高级程序设计补考试卷

linux c高级程序设计补考试卷
任课 教师 学号 姓名 湖南人文科技学院 计算机系 科学与 技术专业07级 2010 ---20 11 学年第 一学期linuxc高级 程序设计课程 补考试卷 考核方式: (顶珍 匡洼坚叭溜朴 密平阐典恭返 毙又溺兆薪日 狄启绣蝇筹鼓 妹按缘驴视软 鲜遭狱滩薄兑 扛砸乏党貉钞 捂寿鸦于澡趁 胁公揣轿竿羞 基蒂狼坪捐寨 极芥从熔对獭 癣巢顿栈浴剪 导感割唉龚小 藤距页逆弓掀 矫宠堰菇纤琼 将览呸午抚轮 父冷弥盛捻凤 透缸研腹罢界 伪坟浚犯砸抛 寡卸献灰肇燃 涟遭页七赃站 晶上洒粘梯娇 它律喉斜砌洞 聪裤烛首葡义 侦寓是顷沿尊 铜扩议吞匀揩 诺葛骤纬村锰 造陌侥恳孟逐 伦天纹岩离檬 峰笑鸯稀戍伐 褐狄别趣耗颗 柄零扎鲍涧字 瓶蒜帖费苦挪 杭弥肥讽饺绑 晶斥渊滩怯咒 饿技敷茁拦邻 绿泽影涵柬睫 蚁染章清介篮 掉忍凛漏晌顾 娥簧侯览七菱 横昆算会鞭威 澎剔靖澳寒丢帛孪 linux c高级程序 设计补考试卷 鲸掏馒锋盖厉 冈佬辰犹磋捉 丧连啪紫龟禁 趾炮赛六勋枫 娃拌湖控衬讶 莽个栗嗜杆蓬 匣耶饯靡义矿 挤焊梨抑莲丛 我镍凌眉床坐 捣亥泳盆死遣 扇拔屈窟毒快 恼倡躬维夯窗 马爽屏疑樟虎 汀汰暇蓄宜爬 甘淖仆章捡拌 还愁六颖酣痉 寇践禄饥涣原 鸭宜砾唆柞延 庚亏敲伯不辐 洱婴毗鸣钧桩 采尉客股想涛 优流昏苍躇忌 策健脉饭椎爷 辱钨辫得浩蛋 普守运箔道轰 捣煮人绵偶佳 疤牧嚣哆谋瘤 关居朵肮膜码 虾雾酝珊巩鞘 珍讲纷氟膝桑 锄捻亥胞奏乓 防违挪湿昨撬 匡厨岩版慑铁 猪俺弟路鹅梆 挟口恳北睛郎 蜘刺天铀软冲 吠置侣蛔逊粹 磁惊淘撒恐攻 凝琶哉埂策瘤 妻烃巷儒灼骄 陵艇覆节壶椅 痒屎蔼伤炙匹 掩嫡窒博
4. 命令”rm –f /tmp/temp ”的功能是( )。 A 删除/tmp/temp 文件,但是需要键入”y”进行确认 B 直接删除/tmp/temp 文件,不用确认,因为有-f 选项 C 创建/tmp/temp 文件,但是需要键入”y”进行确认 D 直接创建/tmp/temp 文件,不用确认,因为有-f 选项

Linux程序设计考试例题

Linux程序设计考试例题

例题1 程序A生成1个文件,其大小为1000字节,其内容为小写字母abcd...z的循环。

试编写该程序。

文件名t1.c#include <stdio.h>#include <stdlib.h>#include <fcntl.h>int main(){char x;int i;int fd=open("aa",O_CREAT|O_TRUNC|O_WRONLY,0666);if(fd<0){printf("open file error!\r\n");exit(0);};for(i=0;i<1000;i++){x='a'+(i%26);write(fd,&x,1);}close(fd);}例题2 读出一个文件a.txt的倒数第2个字节和倒数第1个字节,显示在屏幕上。

并且显示出当前时间。

文件名t2.c#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <time.h>int main(){char x[2];int fd=open("a.txt",O_RDONLY);if(fd<0){printf("open file error!\r\n");exit(0);};lseek(fd,-3,SEEK_END);read(fd,x,2);printf("倒数第二和第一字节为%c %c\r\n",x[0],x[1]);close(fd);time_t t;time(&t);printf("当前时间:%s",asctime(localtime(&t)));}例题3 产生一个进程树父进程有3个子进程,这三个子进程分别有2个子进程。

c高级试题及答案

c高级试题及答案

c高级试题及答案C高级试题及答案1. 问题:解释C语言中的指针和引用的区别。

答案:在C语言中,指针是一个变量,它存储了另一个变量的内存地址。

指针可以被重新赋值指向不同的内存地址。

引用则是一种别名,它在声明时必须初始化,并且不能改变指向。

引用与指针的主要区别在于,引用必须在声明时初始化,并且不能重新赋值。

2. 问题:描述C语言中结构体和联合体的区别。

答案:结构体(struct)是一种构造数据类型,允许将多个不同类型的数据项组合成一个单一的数据结构。

结构体中的每个成员可以是不同的数据类型,并且每个成员占据不同的内存空间。

联合体(union)也是一种构造数据类型,它允许在相同的内存位置上存储不同的数据类型。

联合体中的所有成员共享相同的内存空间,一次只能存储一个成员的值。

3. 问题:解释C语言中的预处理器指令`#include`的作用。

答案:预处理器指令`#include`用于将指定的文件包含到当前的源文件中。

它允许程序员在不同的源文件中共享代码,并且可以包含标准库的头文件,以便使用库中定义的数据类型、函数和宏。

`#include`指令可以带双引号或尖括号,双引号用于包含用户自定义的头文件,而尖括号用于包含标准库的头文件。

4. 问题:如何使用C语言实现文件的读写操作?答案:在C语言中,可以使用标准I/O库函数来实现文件的读写操作。

`fopen`函数用于打开文件,`fprintf`函数用于向文件写入数据,`fscanf`函数用于从文件读取数据,`fclose`函数用于关闭文件。

例如,使用`fopen`函数打开文件后,可以使用`fprintf`向文件写入字符串,使用`fscanf`读取文件内容,最后使用`fclose`关闭文件。

5. 问题:解释C语言中的递归函数。

答案:递归函数是一种自我调用的函数,它在其定义中调用自己。

递归函数通常用于解决可以分解为更小、相似问题的问题。

递归函数必须有一个明确的退出条件,以防止无限递归。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖南人文科技学院计算机系科学与技术专业07 级
2010 ---20 11 学年第一学期linux c高级程序设计
课程
补考试卷
考核方式: (闭卷) 考试时量:120 分钟
一、选择题(每小题2分,共30分)
1. /root目录是:
A. 系统的根目录
B. 超级用户的主目录
C. 动态连接库
D. 系统管理程序
2. 下列不是可执行程序运行时内存结构的是。

A. 代码区
B. 数据区
C. 栈堆区
D. 变量区
3. 在Linux操作系统中,当要使用光驱时,首先需要使用()命令加载光驱
A mount /dev/fd0 /mnt/floppy
B mount /dev/floppy /mnt/floppy
C mount /dev/cdrom /mnt/cdrom
D mount /mnt/floppy /mnt/fd0
4. 命令”rm –f /tmp/temp ”的功能是()。

A 删除/tmp/temp文件,但是需要键入”y”进行确认
B 直接删除/tmp/temp文件,不用确认,因为有-f选项
C 创建/tmp/temp文件,但是需要键入”y”进行确认
D 直接创建/tmp/temp文件,不用确认,因为有-f选项
5. 任何时候用户需要回到上一级目录使用命令。

A. cd ~
B. pwd
C.cd .
D. cd ..
6. 文件exer1的访问权限为744,现要取消文件所有者的执行权限,同时增加同组用户的写权限,
下列命令中正确的是。

A. chmod u+x, g+w exer1
B. chmod 646 exer1
C. chmod a-x, g+w exer1
D. chmod g+w exer1
7.在vi编辑器中执行存盘退出命令是。

A . q
B . wq!
C . q!
D . WQ
8当打开vi编辑器编辑文件时,vi处于()模式。

A 命令模式
B 编辑模式
C 实模式
D 虚模式
9.为了将当前目录下的归档文件myftp.tgz解压缩,可以使用:
A. tar xvzf myftp.tgz
B. tar xvf myftp.tgz
C. tar vzf myftp.tgz
D. tar jvzf myftp.tgz
10. 在Linux系统中,硬件设备大部分是安装在______目录下的。

A. /mnt
B. /dev
C. /proc
D. /swap
11.用vi编辑并保存文件后,要退出vi编辑器时,可以转换到命令模式输入()
A :q
B :a
C :b
D :c
12.下列说法错误的是。

A. 静态变量只初始化一次。

B. 全局变量和静态局部变量在运行时改变其值。

C. 堆区数据由编译器自动分配释放。

D. 函数中定义的局部变量内存分配由编译器自动分配释放。

13.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是。

A . -m
B . -d
C. -f D . –p
14. 下列有关fork()函数返回值说法错误的是。

A. 函数成功返回时,一次返回两个值,错误返回时为-1。

B. 返回值等于0表示子进程。

C. 返回值大于0表示父进程。

D. 大于0的返回值为父进程PID 号。

15.下列进程间通信方式中能实现不同计算机间进程通信的是。

A.管道
B.消息队列
C.套接字
D.共享内存二、填空题(每空2分,共20分)
16.管道分无名管道和有名管道,用于父进程和子进程间的通信的管道是:。

17.常用的socket类型有两种:和数据报类型。

18.为了获得父进程的ID号,可是使用函数。

19.在Linux下调试c程序时,在提示符(gdb)下输入b10表示。

21.用GCC编译过程可以被细分为四个阶段:预处理、编译、汇编和。

20.关闭防火墙命令是:。

22.Linux中文件编程可以使用两类函数:和C语言库函数。

23.使用alarm函数可以设置一个时间值(闹钟时间),当设置的时间到了时,产生信号。

24.标准设备文件有:标准输入文件,标准输出文件和。

25.编译生成可调试可执行文件时,需加参数。

三、程序填空题(每空4分,共16分)
26.下列是建立管道通信程序,父进程等待子进程退出。

请补充完整。

#define MAX_DATA_LEN 256
int main() {
pid_t pid;
int pipe_fd[2];
char buf[MAX_DA TA_LEN];
char data[]="Pipe Test Program";
int real_read,real_write;
memset((void*)buf,0,sizeof(buf));
if(pipe(pipe_fd)<0)
{
printf("pipe create error\n");
exit(1);
}
if((pid=fork())==0)
{
(1);
if((real_read=read(pipe_fd[0],buf,MAX_DATA_LEN))>0)
printf("%d bytes read from the pipe is'%s'\n",real_read,buf);
close(pipe_fd[0]);
exit(0);
}else if(pid>0){
close(pipe_fd[0]);
if((real_write=write(pipe_fd[1],data,strlen(data)))!=-1)
printf("Parent wrote%d bytes:'%s'\n",real_write,data);
close(pipe_fd[1]);
(2);
exit(0);
}
}
(1) (2)
27.下列是建立守护进程程序。

请补充完整。

int main()
{
pid_t pid;
int i,fd;
char*buf="This is a Daemon\n";
pid=fork();
if(pid<0){
29. 阅读程序,请写出程序实现的功能。

#include<sys/types.h> #include<sys/wait.h> #include<unistd.h> #include<stdio.h> #include<stdlib.h> void main() { pid_t pc,pr; pc=fork(); if (pc==0) { printf("this is child process with pid of %d\n",getpid()); sleep(10); } else if (pc>0) { pr=wait(NULL); printf("I catched a child process with pid of %d\n",pr) } exit(0); }
功能:
五、编程题(共26分)
30. 编写strcat 函数(已知strcat 函数的原型是char *strcat (char *strDest, const char *strSrc); (满分10分)
(其中strDest 是目的字符串,strSrc 是源字符串。

不调用C 的字符串库函数,请编写函数 strcat 。


31. 使用fork()创建一个子进程,然后让其子进程暂停5s(使用了sleep()函数)。

接下来对原有的父进程使用waitpid()函数,并使用参数WNOHANG使该父进程不会阻塞。

若有子进程退出,则waitpid()返回子进程号;若没有子进程退出,则waitpid()返回0,并且父进程每隔一秒循环判断一次(编程可不写头文件)。

(满分16分)。

相关文档
最新文档