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语言中的递归函数。

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

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

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

c程序设计考试题目及答案

c程序设计考试题目及答案

c程序设计考试题目及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个关键字用于定义函数?A. structB. intC. voidD. return答案:C2. 在C语言中,哪个运算符用于计算两个数的和?A. +B. -C. *D. /答案:A3. 若有定义`int a = 5;`,则执行`a += 3;`后,变量a的值是多少?A. 3B. 5C. 8D. 无法确定答案:C4. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. $variableD. variable!答案:B5. 在C语言中,以下哪个选项是正确的字符串字面量?A. "Hello, World"B. 'Hello, World'C. "Hello, World'D. 'Hello, World'答案:A6. C语言中,以下哪个选项是正确的二维数组声明?A. int array[3][];B. int array[][3];C. int array[3][3];D. int array[][];答案:C7. 在C语言中,以下哪个选项是正确的条件语句?A. if (x > y)B. if x > yC. if (x > y) elseD. if (x > y) else if答案:A8. 在C语言中,以下哪个选项是正确的循环语句?A. for (int i = 0; i < 10; i++)B. for i = 0; i < 10; i++C. for (int i = 0; i < 10;)D. for (i = 0; i < 10; i++)答案:A9. 在C语言中,以下哪个选项是正确的函数声明?A. int add(int, int);B. int add(int a, int b)C. int add(int, int) {}D. int add(a, b)答案:A10. 在C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int ptr[];C. int *ptr[10];D. int ptr(int);答案:A二、填空题(每题2分,共20分)1. 在C语言中,`printf`函数用于__输出__。

c高级试题及答案

c高级试题及答案

c高级试题及答案C高级试题及答案1. 指针与数组- 问题:如何使用指针访问数组元素?- 答案:可以通过数组名加偏移量的方式使用指针访问数组元素。

例如,如果有一个数组`int arr[5]`和一个指针`int *ptr`,那么`ptr = arr;`将指针指向数组的首元素,然后可以通过`*(ptr + i)`访问第`i+1`个元素。

2. 结构体- 问题:如何定义一个包含两个整型成员的结构体?- 答案:定义一个包含两个整型成员的结构体可以使用如下语法: ```cstruct MyStruct {int member1;int member2;};```3. 函数指针- 问题:如何定义一个指向函数的指针?- 答案:定义一个指向函数的指针需要指定函数的返回类型和参数类型。

例如,如果有一个函数`int add(int, int)`,则可以定义一个指向该函数的指针如下:```cint (*funcPtr)(int, int);funcPtr = add;```4. 递归函数- 问题:编写一个递归函数,计算一个数的阶乘。

- 答案:阶乘的递归函数可以定义如下:```cint factorial(int n) {if (n <= 1) return 1;else return n * factorial(n - 1);}```5. 动态内存分配- 问题:如何使用malloc函数动态分配内存?- 答案:使用`malloc`函数动态分配内存需要指定分配的内存大小。

例如,分配一个整型数组的内存可以这样写:```cint *array = (int*)malloc(5 * sizeof(int));```使用后记得使用`free`函数释放内存:```cfree(array);```6. 位运算- 问题:如何使用位运算符交换两个变量的值?- 答案:可以使用位运算符`^`(异或)来交换两个变量的值,而不需要使用临时变量。

linux C 高级程序设计试卷

linux C 高级程序设计试卷

湖南人文科技学院计算机系科学与技术专业 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/floppyB mount /dev/floppy /mnt/floppyC mount /dev/cdrom /mnt/cdromD mount /mnt/floppy /mnt/fd04. 命令”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. D. cd ..6. 文件exer1的访问权限为744,现要取消文件所有者的执行权限,同时增加同组用户的写权限,下列命令中正确的是。

A. chmod u+x, g+w exer1B. chmod 646 exer1C. chmod a-x, g+w exer1D. chmod g+w exer17.在vi编辑器中执行存盘退出命令是。

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

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

嵌入式linux c开发常见笔试题目

嵌入式linux c开发常见笔试题目

嵌入式linux c开发常见笔试题目嵌入式Linux C开发是一个广泛应用于各种嵌入式设备的技术领域,也是许多企业在招聘时重点考察的技能。

在笔试中,考察的内容通常包括C语言基础、嵌入式系统知识、Linux系统编程等方面。

以下是一些常见的嵌入式Linux C开发笔试题目,供大家参考。

1. C语言基础在嵌入式Linux C开发中,对C语言的熟练掌握是非常重要的。

下面是一些与C语言基础相关的题目:1.1 请写出C语言中的数据类型,并解释其含义。

1.2 请解释C语言中的指针,并写出指针的声明、赋值和使用的例子。

1.3 请解释C语言中的结构体,并写出结构体的定义和使用的例子。

2. 嵌入式系统知识嵌入式系统是指在限定的资源和空间中运行的计算机系统,对于嵌入式Linux C开发来说,对嵌入式系统的了解是必不可少的。

下面是一些与嵌入式系统知识相关的题目:2.1 请解释嵌入式系统的特点,并举例说明。

2.2 请简要解释Linux内核的作用,并说明为什么在嵌入式系统中常使用Linux内核。

2.3 请解释交叉编译的概念,并说明为什么在嵌入式Linux C开发中常使用交叉编译。

3. Linux系统编程Linux系统编程是指在Linux系统上进行程序开发和调试的技术。

对于嵌入式Linux C开发者来说,熟悉Linux系统编程是必备的技能。

下面是一些与Linux系统编程相关的题目:3.1 请解释Linux系统中的进程和线程,并说明它们的区别和联系。

3.2 请解释Linux文件系统的层次结构,并说明每个层次的作用。

3.3 请解释Linux中的系统调用,并举例说明几个常用的系统调用。

4. 嵌入式Linux应用开发嵌入式Linux应用开发是指在嵌入式Linux系统上进行应用程序开发的技术。

下面是一些与嵌入式Linux应用开发相关的题目:4.1 请编写一个在嵌入式Linux系统上运行的Hello World程序。

4.2 请解释Linux设备驱动程序的概念,并说明为什么在嵌入式Linux应用开发中常涉及到设备驱动程序。

linux c语言编程训练题

linux c语言编程训练题

linux c语言编程训练题含解答共5道下面是一些简单的Linux C 语言编程训练题,每个题目都包含了简短的解答。

请注意,这些问题旨在测试基本的C 语言编程知识和Linux 系统编程概念。

1. 打印文件内容编写一个程序,接受一个文件名作为命令行参数,并打印文件的内容到终端。

```c#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]) {if (argc != 2) {fprintf(stderr, "Usage: %s <filename>\n", argv[0]);exit(EXIT_FAILURE);}FILE *file = fopen(argv[1], "r");if (file == NULL) {perror("Error opening file");exit(EXIT_FAILURE);}int c;while ((c = fgetc(file)) != EOF) {putchar(c);}fclose(file);return 0;}```2. 计算文件行数编写一个程序,接受一个文件名作为命令行参数,并统计文件的行数。

```c#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]) {if (argc != 2) {fprintf(stderr, "Usage: %s <filename>\n", argv[0]);exit(EXIT_FAILURE);}FILE *file = fopen(argv[1], "r");if (file == NULL) {perror("Error opening file");exit(EXIT_FAILURE);}int lines = 0;int c;while ((c = fgetc(file)) != EOF) {if (c == '\n') {lines++;}}printf("Number of lines: %d\n", lines);fclose(file);return 0;}```3. 逆序输出字符串编写一个程序,接受一个字符串作为命令行参数,并逆序输出该字符串。

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

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

高级语言c程序设计试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,错误的是()。

A. C语言是一种高级语言B. C语言可以直接被计算机执行C. C语言具有结构化的特点D. C语言支持模块化程序设计答案:B2. 在C语言中,用于定义变量的关键字是()。

A. varB. defineC. intD. let答案:C3. 下列关于C语言函数的描述中,正确的是()。

A. 函数必须有返回值B. 函数可以没有参数C. 函数的返回值类型必须与定义时一致D. 函数可以嵌套定义答案:B4. 在C语言中,用于表示逻辑“与”操作的运算符是()。

A. &&B. ||C. !D. =答案:A5. 下列关于C语言数组的描述中,正确的是()。

A. 数组的下标从0开始B. 数组的下标从1开始C. 数组可以存储不同类型的数据D. 数组的大小在定义后可以改变答案:A6. 在C语言中,用于定义指针的关键字是()。

A. ptrB. pointC. *D. &答案:C7. 下列关于C语言中结构体的描述中,错误的是()。

A. 结构体可以包含不同类型的数据B. 结构体可以包含其他结构体C. 结构体变量不能存储数据D. 结构体可以包含函数答案:C8. 在C语言中,用于实现文件操作的函数库是()。

A. stdio.hB. stdlib.hC. string.hD. fcntl.h答案:A9. 下列关于C语言中预处理指令的描述中,错误的是()。

A. #define可以定义宏B. #include用于包含头文件C. #if用于条件编译D. #else用于循环控制答案:D10. 在C语言中,用于实现动态内存分配的函数是()。

A. mallocB. freeC. callocD. realloc答案:A二、填空题(每题2分,共20分)1. 在C语言中,一个变量的声明通常包括变量的____和____。

答案:类型名称2. C语言中,用于输入的函数是____。

LINUX程序设计环境考试试卷-共8套

LINUX程序设计环境考试试卷-共8套

Linux 期末考试试题(一)一、选择题(每小题2分,共50分)1.在创建Linux分区时,一定要创建(D )两个分区A. FAT/NTFSB. FAT/SWAPC. NTFS/SWAPD.SWAP/根分区2.在Red Hat Linux 9中,系统默认的(A)用户对整个系统拥有完全的控制权。

A. rootB. guestC. administratorD.supervistor.3. 当登录Linux时,一个具有唯一进程ID号的shell将被调用,这个ID是什么( B )A. NIDB. PIDC. UIDD. CID4. 下面哪个命令是用来定义shell的全局变量( D )A. exportfsB. aliasC. exportsD. export5. 哪个目录存放用户密码信息( B )A. /bootB. /etcC. /varD. /dev6. 默认情况下管理员创建了一个用户,就会在( B )目录下创建一个用户主目录。

A. /usrB. /homeC. /rootD. /etc7. . 当使用mount进行设备或者文件系统挂载的时候,需要用到的设备名称位于( D )目录。

A. /homeB. /binC. /etcD. /dev8. 如果要列出一个目录下的所有文件需要使用命令行( C )。

A. ls –lB. lsC. ls –a(所有)D. ls –d9. 哪个命令可以将普通用户转换成超级用户(D )A. superB. passwdC. tarD. su10. 除非特别指定,cp假定要拷贝的文件在下面哪个目录下( D )A. 用户目录B. home目录C. root目录D. 当前目录11. 在vi编辑器里,命令"dd"用来删除当前的( A )A. 行B. 变量C. 字D. 字符12. 当运行在多用户模式下时,用Ctrl+ALT+F*可以切换多少虚拟用户终端( B )A. 3B. 6C. 1D. 1213. Linux启动的第一个进程init启动的第一个脚本程序是( B )。

linux系统编程试题c

linux系统编程试题c

上嵌《嵌入式Linux系统编程》考试试卷 C一、选择题(5×1')1、( C )就是操作系统中最重要、最基本的概念之一,它就是系统分配资源的基本单位,就是一个具有独立功能的程序段对某个数据集的一次执行活动。

A、程序B、作业C、进程D、线程2、( B )的主要特点就是提供即时响应与高可靠性。

生产过程的控制、武器系统、航空订票系统、银行业务就就是这样的系统。

A、分时系统B、实时系统C、批处理系统D、分布式系统3、( B )数据传送方式的作用就是在外围设备与内存之间开辟直接的数据交换通道。

A、程序直接控制B、 DMAC、通道控制D、中断4、下面临界区概念论述正确的就是( A )A、临界区就是指进程中用于实现进程互斥的那段程序代码B、临界区就是指进程中用于实现进程同步的那段程序代码C、临界区就是指进程中用于实现进程通信的那段程序代码D、临界区就是指并发进程中与共享变量有关的程序段5、多道程序设计就是指( D )A、在实时系统中并发运行多个程序B、在分布式系统中同一时刻运行多个程序C、在一台处理机上同一时刻运行多个程序D、在一台处理机上并发运行多个程序二、填空题(20×1')1、在Linux系统中,以_____文件___方式访问设备 ,每个文件用____i节点___来标识。

2、启动Linux Shell的时候,stdin , stdout , stderr 三个文件描述符会自动打开,她们的值分别就是_ 0 _, 1 , 2 、3、创建新进程的系统调用就是 fork()、 exec() ,创建新线程的函数就是pthread_create() 、4、操作系统发展的历程,从串行处理,批处理程序, 多道程序 ,_____分时处理______、5、进程控制块的三类信息:进程标识信息,___进程状态信息____,___进程控制信息_____、6.进程具有的基本状态为:__R____ 、__S____ 、__T____ 、__Z___ 。

C 高级编程 考试试卷 答案

C 高级编程 考试试卷 答案

Linux 系统编程答案在后面!!一,选择(每题至少有一个正确答案),每题2分满分34分1. 对于linux内核而言,所有打开的文件都通过( )引用:A . 文件指针 B. 文件描述符 C. i节点 D. 文件名2. linux进程默认打开的三个文件描述符不包括下列哪一个:A . STDOUT_FILENO B.STDIN_FILENO C.STDERR_FILENO D. STDSTR_FILENO3. 当umask值为011时,默认创建的文件和目录权限分别是多少:A. 766/766B. 655/766C. 666/766D. 655/7774. 执行完下列命令以后file3的连接数是多少:ln file0 file1ln file1 file2ln -s file1 file3ln file4 file3A. 1B. 2C. 3D. 45.某文件的权限是 - r w x r - - r- -,下面描述正确的是:A. 文件的权限值是755 B 文件的所有者对文件只有读权限C. 文件的权限值是 744 D 其他用户对文件只有读权限E同组用户对文件只有写权限6. 关于进程ID跟线程ID的下列说法正确的是:A. 每一个进程都有一个非负整数表示的唯一IDB. 一个进程只有一个控制线程,同一时刻只执行一组机器指令C. 进程ID是可以重用的D. Id为0的进程通常是调度进程7. 关于fork函数下列描述正确的是:A. fork函数被调用一次则会创建一个子进程B. fork函数被调用一次会返回两次C. fork函数调用以后子进程返回自己的ID,父进程返回0D. fork 函数调用以后子进程返回0,父进程返回子进程的ID8. 下列对父子进程描述正确的是:A. 进程ID不同B. 父进程设置的文件锁会被子进程继承C. 子进程的未处理的闹钟(alarm)被清空D. 两个进程具有不同的父进程ID9. 关于信号下列描述正确的是:aA. 信号是软中断B. 信号提供了一种处理异步事件的方法C. 信号的值是一些从0开始的宏定义D. 信号是靠一些外部事件来触发的10. 关于信号产生的条件,下列说法正确的是:A. 当用户按某些终端键时,引发终端产生的信号B. 硬件异常产生信号C. 进程调用kill()函数可以发送一个信号D. 当检测到某种软件条件已经发生并通知有关进程时也产生信号11. 关于信号处理下列描述正确的是:A. 捕获信号B. 忽略信号C. 调用kill函数D.执行默认操作12. 关于互斥量下列描述正确的是:bA. 从本质上说互斥量是一把锁,在访问共享资源时候对互斥量进行加锁,访问完成之后释放互斥量上的锁B. 对互斥量加锁以后,任何其他试图访问互斥量的现线程都会阻塞,直到当前线程释放互斥量上的锁C. 如果释放互斥锁时有多个阻塞线程,所有在该锁上阻塞的线程都有可能进入运行状态D. 如果释放互斥锁时有多个阻塞线程,这些线程会按照一定的顺序一次得到互斥量的访问权限13. 下列属性中属于线程属性的有:A. detachstateB. guardsizeC. stackaddrD. stacksize14. 关于套接字下列描述正确的是:A. 套接字描述符的本质是文件描述符B. 对于普通文件描述符操作的所有方法都使用于套接字描述符C. 网络套接字的本质是管道D. 用open函数打开/创建socket15. 关于内存映射下列描述正确的是:A. 内存映射是内核提供的一种I/O方式B. 内存映射中内存和文件是一一对应的C. 在linux中用mmap函数实现内存映射D. 内存映射使用户可以通过一种透明的映射机制直接吧文件写入磁盘16. 关于进程组下列描述不正确的是:A. 每个进程除了有一个进程ID之外还属于一个进程组B. 每一个进程组都会有一个组长进程,而且进程组ID等于其进程组长的IDC. 只要进程组中有一个进程存在这个进程组就存在,和组长进程是否终止无关D. 进程组的生命周期是随着进程组长的创建和终止而产生和终止的17. 关于会话(session)下列描述正确的是:A. 会话属于某个进程组B. 进程调用setsid函数是会建立一个新会话C. 当某个进程调用setsid函数之后会默认成为该会话的会话首进程(session leader),此时该进程是当前会话的唯一进程。

(完整版)Linux高级编程笔试题答案

(完整版)Linux高级编程笔试题答案

高级编程笔试题答案一、选择题1.在网络字节序中,所谓”小端"(little endian)说法正确的是( B )A。

高字节数据存放在低地址处,低字节数据存放在高地址处B. 低字节位数据存放在内存低地址处,高字节位数据存放在内存高地址处C。

和编译器相关D. 上述答案都不正确2.C语言中,系统自动打开的文件是( D )A。

二进制文件 B.随机文件C。

非缓冲文件 D.设备文件3.TCP使用( B )进行流量控制.A。

3次握手法 B. 窗口控制机制C。

自动重发机制D。

端口机制4.TCP/IP层IP协议的服务是( C )A。

可靠服务 B. 有确认的服务C. 无连接数据报D. 以上都不对5.对于一个没有设置任何套接口选项的阻塞套接口,调用recv接收对方的数据,对方发送数据前突然断电,下列哪种情况将会发生( A )A. recv永远不会返回B。

recv立刻返回—1C. recv立刻返回0D. recv在等待很长一段时间后返回-16.下列哪些关于套接口选项函数的说法是正确的( C )A。

SO_DONTLINGER选项是让TCP套接口不对数据进行缓存,调用send函数后立刻将数据发送出去;B。

调用SO_RCVBUF和SO_SNDBUF调整TCP窗口的大小;C。

SO_REUSEADDR选项允许套接口绑定在一个已经在使用的地址上;D。

SO_MAX_MSG_SIZE选项获取每次调用TCP套接口send时,所能发送的最大字节数;二、问答题1.fork和vfork的区别?vfork用于创建一个新进程,而该进程的目的是exec一个新程序。

vfork与fork一样都创建一个子进程,但他并不把父进程地址空间完全复制到子进程中,因为子进程通常都会调用exec或(_exit),于是也就不会访问该地址空间.vfork与fork的另一个区别是vfork保证子进程先运行,在它调用exec或_exit 之后父进程才可能被调度运行。

最新Linux及C考试题附答案

最新Linux及C考试题附答案

华清远见嵌入式学院《Linux及C》考试题(A卷)1-5 CBCDB6-10 DBADD11-15 CCCAA16-20 C ADD C D A21-23 DBA一、选择题(23题,每空2分,共46分)1.常见的Linux发行版本有很多,下面不是Linux发行版本的是( C)。

[A] Red Hat Linux [B] Ubuntu Linux [C] unix [D] 红旗2.下面不是对Linux操作系统特点描述的是( B )。

[A] 良好的可移植性[B] 稳定性低[C] 多用户[D] 多任务3.嵌套创建目录的命令可以使用( C )。

[A] mkdir –h [B] help mkdir [C] mkdir -p [D] man mkdir4.假设目录中存在若干文件file_num.txt(num表示文件编号,1~8),使用以下( D )通配符可以挑选出其中的编号为1、2、3、5、6、7的文件。

[A] file_*.txt [B] flie_?.txt [C] file_[1-7].txt [D] file_[^48].txt5.文件权限r-x-w-r--对应的八进制表示形式为( B )[A] 0536 [B] 0524 [C] 0656 [D] 05346.目前流行的两种软件包管理机制,Debian使用( D )软件包。

[A] zip [B] rpm [C] tar [D] deb7.下述程序第二次的输出结果为( B )。

int main(void){extern int a;int b=0;static int c;a+=3;other();b+=3;other();}int a=5;other(){int b=3;static int c=2;a+=5; b+=5; c+=5;printf("%d,%d,%d\n",a,b,c);c=b;}[A] 13,0,13[B] 18,8,13 [C] 13,8,13[D] 18,8,08.C语言程序的三种基本程序是( A )。

C语言程序设计(高级)考试(C卷评分标准) - 副本

C语言程序设计(高级)考试(C卷评分标准) - 副本

深圳高级技工学校2009-2010学年 第二学期C 语言程序设计(高级) 评分标准(C 卷)考试时间:100分钟 总分100分 一、单选题(每题3分,共18分) 1、类中定义的成员,其隐含访问权限为 ( C )。

A 、public B 、protected C 、private D 、static 2、假定AB 为一个类,则执行“AB a(4) , b[3] , * p[2] ;”语句时,自动调用该类构造函数的次数为( B )。

A 、3 B 、4 C 、7 D 、9 3、由C++目标文件连接而成的可执行文件的缺省扩展名为 ( B )。

A 、cpp B 、exe C 、obj D 、lik 4、为了培养良好的程序设计风格,下列描述中正确的是( A ) A 、程序应简单、清晰、可读性好 B 、符号名的命名只要符合语法 C 、充分考虑程序的执行效率 D 、程序的注释可有可无 5、由多个基类共同产生的派生类,称为类的( C ) A 、虚基类 B 、虚函数 C 、多继承 D 、多派生 6、下面的哪个保留字不能作为函数的返回类型?( C ) A 、void B 、int C 、new D 、long 二、多选题:(每空4分,共12分) 1、指出下列哪些是类time 的构造函数: ( AD ) A 、time(int,int); B 、~time( ); C 、~time(int,int); D 、void time( ); 2、在下面的函数声明中,错误的是( AD )。

A 、void getAge(int a=5 , int b) B 、 void getAge(int , int) C 、void getAge (char , int b=5) D 、int getAge (int x ; char y) 3、实现动态联编需哪些条件: ( ABD )。

A 、类之间应满足赋值兼容规则 B 、在基类中要有虚函数的声明 C 、在派生类中要有虚函数的声明 D 、通过对象指针或引用调用虚函数┄┄┄┄┄┄┄┄┄┄线此过超得不题答生考线订装┄┄┄┄┄┄┄┄┄┄┄┄三、程序设计题。

相关主题
  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分)。

相关文档
最新文档