linuxc试题
嵌入式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 面试题
一.填空题:1. 在Linux系统中,以文件方式访问设备。
2. Linux内核引导时,从文件/etc/fstab中读取要加载的文件系统。
3. Linux文件系统中每个文件用索引节点来标识。
Linux文件系统使用索引节点来记录文件信息,作用于Windows的文件分配表类似,索引节点是一个数据结构,它包含了一个文件的文件名,位置,大小,建立或修改时间,访问权限,所属关系等文件控制信息,一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引结点数组中的唯一一个元素对应,系统为每个索引结点分配了一个号码,也就是该结点在数组中的索引号,称为索引结点号。
Linux文件系统将文件索引结点号和文件名同时保存在目录中,所以目录只是将文件的名称和它的索引结点号结合在一起的一张表。
目录中每一对文件名称和索引结点号称为一个连接。
4. 全部磁盘块由四个部分组成,分别为引导块、专用块、i节点表块和数据存储块。
Linux系统中的每个文件都被赋予一个唯一的数值,这个数值称做索引节点。
索引节点存储在一个称作索引节点表<inode table>中,该表在磁盘格式化时被分配。
每个实际的磁盘或分区都有其自己的索引节点表。
一个索引节点包含文件的所有信息,包括磁盘上数据的地址和文件类型。
文件类型包括如普通文件、目录和特殊文件这样的信息。
linux硬盘组织方式为:引导区、超级块(superblock),索引结点(inode),数据块(datablock),目录块(diredtory block)。
其中超级块中包含了关于该硬盘或分区上的文件系统的整体信息,如文件系统的大小等;超级块后面的数据结构是索引结点,它包含了针对某一个具体文件的几乎全部信息,如文件的存取权限、所有者、大小、建立时间以及对应的目录块和数据块等;数据块是真正存储文件内容的位置。
但是索引结点中不包括文件的名字,文件名是放在目录块里的。
目录块里包含有文件的名字以及此文件的索引结点编号。
嵌入式linux c开发常见笔试题目
嵌入式Linux C开发的常见笔试题目主要围绕C语言基础、Linux操作系统以及嵌入式系统开发等方面。
以下是一些可能的笔试题目:
1. 请解释C和C++的主要区别。
2. 描述一下静态变量和全局变量在内存中的分配情况。
3. 解释一下什么是预处理器以及它的主要作用。
4. 编写一个程序,实现两个整数的交换而不使用第三个变量。
5. 描述一下进程和线程的区别以及它们之间的关系。
6. 什么是死锁?请列举至少两种导致死锁的情况。
7. 请解释一下中断处理程序的工作原理。
8. 如何在Linux中创建一个新进程?
9. 描述一下Linux中的同步和异步机制。
10. 什么是RTOS?请列举至少两个RTOS的例子。
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语言开发环境的步骤。
Linux程序员(C语言)考证题库
Linux程序员(C语言)考证题库一、单项选择题1.Linux的根分区的文件系统类型是C。
A.FAT16B.FAT32C.ext3D.NTFS2.安装好Linux操作系统后,系统默认的超级用户(系统管理员)账号是C。
A.administratorB.guestC.rootD.boot3.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在C目录中。
A./binB./etcC./devD./lib4.Linux有三个查看文件的命令,若希望在查看文件内容过程中,可以用光标上下移动来查看文件内容,应使用C命令。
A.catB.moreC.lessD.menu5.可以为文件或目录重命名的命令是C。
A.mkdirB.rmdirC.mvD.rm6.已知某用户stud1,其用户目录为/home/stud1。
如果当前目录为/home,进入目录/home/stud1/test的命令是:C。
A.cd testB.cd/stud1/testC.cd stud1/testD.cd home7.Linux文件权限一共10位长度,分成四段,第三段表示的内容是C。
A.文件类型B.文件所有者的权限C.文件所有者所在组的权限D.其他用户的权限8.将Windows C:盘(hda1)安装在Linux文件系统的/winsys目录下,命令是B。
A.mount–t vfat dev/hda1/winsysB.mount–t vfat/dev/hda1/winsysC.mount–t vfat/dev/hda1winsysD.mount–t vfat dev/hda1winsys9.一般情况下,系统启动过程自动加载的文件系统信息是存放在文件D中A./usr/sbin/cfdiskB./sbin/fdiskC./etc/mtabD./etc/fstab10.系统中有用户user1和user2,同属于users组。
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___ 。
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笔试题
c语言常见笔试题大全(一)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为u币你哦门票,模糊刚看见快乐科技计划发广告和统一,(表示无符号长整型),那么你有了一个好的起点。
记住,第一印象很重要。
2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B) ((A) <= (B) ?(A) : (B))这个测试是为下面的目的而设的:1). 标识#define在宏中应用的基本知识。
这是很重要的,因为直到嵌入(inline)操作符变为标准C的一部分,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2). 三重条件操作符的知识。
这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。
3). 懂得在宏中小心地把参数用括号括起来4). 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?least = MIN(*p++, b);3. 预处理器标识#error的目的是什么?如果你不知道答案,请看参考文献1。
这问题对区分一个正常的伙计和一个书呆子是很有用的。
只有书呆子才会读C语言课本的附录去找出象这种问题的答案。
当然如果你不是在找一个书呆子,那么应试者最好希望自己不要知道答案。
死循环(Infinite loops)4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?这个问题用几个解决方案。
我首选的方案是:while(1){}一些程序员更喜欢如下方案:for(;;){}这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。
Linux C 面试题
linux C程序员经典面试题一想成为嵌入式程序员应知道的0x10个基本问题:预处理器(Preprocessor)1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
4) 如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。
记住,第一印象很重要。
2 . 写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。
#define MIN(A,B) ((A)<= (B) ? (A) : (B))这个测试是为下面的目的而设的:1) 标识#define在宏中应用的基本知识。
这是很重要的。
因为在嵌入(inline)操作符变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。
2)三重条件操作符的知识。
这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。
3) 懂得在宏中小心地把参数用括号括起来4) 我也用这个问题开始讨论宏的副作用,例如:当你写下面的代码时会发生什么事?least = MIN(*p++, b);3. 预处理器标识#error的目的是什么?如果你不知道答案,请看参考文献1。
这问题对区分一个正常的伙计和一个书呆子是很有用的。
只有书呆子才会读C语言课本的附录去找出象这种问题的答案。
LinuxC面试题汇总(总有你不知道的知识点)
LinuxC⾯试题汇总(总有你不知道的知识点)linux C1.⽤变量a给出下⾯的定义.a) ⼀个整型数b) ⼀个指向整型数的指针c) ⼀个指向指针的的指针,它指向的指针是指向⼀个整型数d) ⼀个有10个整型数的数组e) ⼀个有10个指针的数组,该指针是指向⼀个整型数的f) ⼀个指向有10个整型数数组的指针g) ⼀个指向函数的指针,该函数有⼀个整型参数并返回⼀个整型数h) ⼀个有10个指针的数组,该指针指向⼀个函数,该函数有⼀个整型参数并返回⼀个整型数答案是:a) int a;b) int *a;c) int **a;d) int a[10];e) int *a[10];f) int (*a)[10];g) int (*a)(int);h) int (*a[10])(int);2.写⼀个“标准”宏MIN,这个输⼊两个参数并返回较⼩的⼀个。
#define Min(a,b) ( ((a)>=(b))?(b):(a))3.嵌⼊式经常⽤到死循环,你怎么样⽤C来编写死循环呢?我的⾸选就是:while(1){},⼀些有经验的程序员喜欢⽤for( ; ; ){} ,还有⼀种是写汇编语⾔的程序员常⽤的写法:Loop:…goto Loop;4.引⽤和指针的区别?答:1.引⽤必须要初始化,指针可以不⽤初始化;2.不存在指向空值的引⽤,但是存在指向空值的指针;3.引⽤初始化后不能改变,但存在指向空值的指针;4.引⽤是变量的别名,本⾝不单独分配⾃⼰的内存空间,⽽指针有⾃⼰的内存空间;5.关键字static的作⽤是什么?在c语⾔中static有三个明显的作⽤:1)static在修饰局部变量的时候,其使得局部变量的⽣命周期发⽣改变,使得其放在data段,直到程序运⾏结束才结束。
2)static在修饰全局变量的时候,作⽤是改变其作⽤域,使得全局变量只能在定义的⽂件中使⽤。
3)static在修饰函数的时候,同样也是只能时函数只能在当前的⽂件中使⽤。
Linux C(刘学勇 编著)各章习题答案
return 0;
}
三、上机题
1、
#include <stdio.h>
main()
{
char a;
while(1)
{
scanf("%c",&a);
if(a=='q')
return ;
printf("%c", a);
}
}
2、
#include <stdio.h>
int main(int argc , char *argv[])
if(write(target_fd, iobuffer, num)!=num)
{
printf("Target file write error!\n");
return 4;
}
close(source_fd);
close(target_fd);
return 0;
}
2、
#include <sys/types.h>
{
printf("Target file open error!\n");
return 3;
}
while((num=read(source_fd, iobuffer, BUFSIZE))>0)
{
for(i=0;i<num;i++)
{
if(iobuffer[i]>='a' &&iobuffer[i]<='z')
_exit(0);
}
LINUX c精彩试题
华见嵌入式学院第一学期期中考试一、选择题(20题,共44分)1.常见的Linux发行版本有很多,下面不是Linux发行版本的是( )。
[A] Red Hat Linux [B] Ubuntu Linux [C] X Window[D] SuSE Linux2.下面不是对Linux操作系统特点描述的是( )。
[A] 良好的可移植性[B] 单用户[C] 多用户[D] 多任务3.下面( )命令不能用来显示文件的容。
[A] more [B] less [C] find [D] cat4.查看创建目录命令mkdir的帮助文档,可以使用命令( )。
[A] mkdir –h [B] help mkdir [C] mkdir -p [D] man mkdir5.假设目录中存在若干文件file_num.txt(num表示文件编号,1~10),使用以下( )通配符可以挑选出其中的编号为1、3、5的文件。
[A] file_*.txt [B] flie_?.txt [C] file_[135].txt [D] file_[^135].txt6.文件权限r-x-wxr--对应的八进制表示形式为( )[A] 0536 [B] 0654 [C] 0656 [D] 05347.在C语言中,要求运算数必须是整型的运算符是( )。
[A] / [B] ++ [C] != [D] %8.C语言中,逻辑“真”等价于( )。
[A] 大于零的数[B] 大于零的整数[C]非零的数[D] 非零的整数9.目前流行的两种软件包管理机制,Debian使用( )软件包,Redhat使用( )软件包。
[A] tgz [B]rpm [C] tar [D]deb10.下面函数的功能是( )。
int fun (char*x){char*y=x;while(*y++);return(y-x-1);}[A] 求字符串的长度[B] 比较两个字符串的大小[C] 将字符串x复制到字符串y[D] 将字符串x连接到字符串y后面11.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
7、用户可以定制自己 shell 的文 8、除了 root
用户,其他用户对/etc/passwd 文件是只读的。
9、要得到一个用户的详细信息,除了 passwd 文件之外,还可以通过命令 finger 来查看。 10、检测网络连通性的命令是 ping 。 三、名词解释(20 分) 1、管道 系统传统的进程通信技术,包括管道和命名管道,通过文件系统来实现。 管道是 UNIX 系统传统的进程通信技术,包括管道和命名管道,通过文件系统来实现。2、 GNU GNU 是 GNU is not UNIX 的缩写,是自由软件基金会发起的一个项目的名称,该项目试图 的缩写,是自由软件基金会发起的一个项目的名称, 开发一个类似于 UNIX、但是是可自由发布和可移植的操作系统。 、但是是可自由发布和可移植的操作系统。 3、线程 线程( 线程(thread)是在一个进程内的基本调度单位,线程可以看作是一个执行流,拥有记录自 )是在一个进程内的基本调度单位,线程可以看作是一个执行流, 己状态和运行现场的少量数据(堆栈和上下文)但没有单独的代码段和数据段, 己状态和运行现场的少量数据(堆栈和上下文)但没有单独的代码段和数据段,而是与其 他线程共享。 他线程共享。 4、环境变量 环境变量描述了进程的运行环境,一般用大写字母表示,可以被重新设置。 环境变量描述了进程的运行环境,一般用大写字母表示,可以被重新设置。 四、简答题(20 分) 1、请你谈谈 Linux 操作系统有什么优点? Linux 的主要优点包括:1) 提供了先进的网络支持:内置 TCP/IP 协议;2) 真正意义上的多任务、 的主要优点包括: ) 提供了先进的网络支持: 协议; ) 真正意义上的多任务、
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. 逆序输出字符串编写一个程序,接受一个字符串作为命令行参数,并逆序输出该字符串。
linuxC高级程序设计试卷.pdf
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]);
1. / root 目录是:
A. 系统的根目录
B. 超级用户的主目录
C. 动态连接库
D. 系统管理程序
号
学
2. 下列不是可执行程序运行时内存结构的是
。
A. 代码区
B. 数据区
C. 栈堆区
D. 变量区
10. 在 Linux 系统中,硬件设备大部分是安装在
A. /mnt
B. /dev
C. /proc
D. /swap
C 创建 /tmp/temp 文件,但是需要键入 ”y”进行确认
D 直接创建 /tmp/temp 文件,不用确认,因为有 -f 选项
12.下列说法错误的是
。
A. 静态变量只初始化一次。 B. 全局变量和静态局部变量在运行时改变其值。 C. 堆区数据由编译器自动分配释放。 D. 函数中定义的局部变量内存分配由编译器自动分配释放。
-1。
B. 返回值等于 0 表示子进程。
6. 文件 exer1 的访问权限为 744,现要取消文件所有者的执行权限, 同时增加同组用户的写权限,
C. 返回值大于 0 表示父进程。 D. 大于 0 的返回值为父进程 PID?号。
15.下列进程间通信方式中能实现不同计算机间进程通信的是
linux c 面试题
linux c 面试题Linux C 面试题一般涉及到Unix/Linux系统编程相关内容,旨在了解面试者对于系统级编程的理解和实践经验。
下面是一些常见的LinuxC 面试题,供参考。
一、基础知识类题目1. 请简述进程和线程的区别以及优缺点。
答:进程是资源分配和调度的基本单位,拥有独立的地址空间;线程是调度的基本单位,共享地址空间。
进程之间切换开销大,数据共享和通信相对复杂;线程切换开销小,数据共享和通信相对简单。
进程相对安全,一个进程崩溃不会影响其他进程;线程相对高效,创建、销毁开销小。
2. 请解释虚拟内存的概念。
答:虚拟内存是一种将进程地址空间和物理内存分离的机制。
通过将进程的虚拟地址映射到物理内存上,实现了对内存的抽象和管理。
虚拟内存使得每个进程有独立的地址空间,提高了内存的利用率和管理的灵活性。
3. 请说明静态链接库和动态链接库的区别。
答:静态链接库在编译时被连接到可执行文件中,执行时不再需要外部的库文件;动态链接库在程序执行时才会被加载到内存中。
静态链接库增加了可执行文件的大小,但程序执行时不依赖外部环境;动态链接库减小了可执行文件的大小,但程序在执行时需要依赖外部环境。
二、编程题目1. 编写一个程序,实现字符串逆序输出。
```c#include <stdio.h>#include <string.h>void reverse(char* str) {int len = strlen(str);for (int i = len - 1; i >= 0; i--) {printf("%c", str[i]);}}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);printf("逆序输出为:");reverse(str);return 0;}```2. 编写一个程序,统计一个字符串中每个字符出现的次数。
linux c面试题
linux c面试题1. 简介Linux C面试常见的题目主要围绕C语言和Linux系统相关的知识和技能。
本文将围绕以下几个主题展开:进程管理、文件操作、线程、网络编程和内存管理。
通过对这些主题的深入讨论,将帮助读者更好地准备Linux C面试。
2. 进程管理(1)请解释进程和线程的区别。
在Linux系统中,进程是程序的一次执行过程,它拥有独立的内存空间和资源。
而线程是轻量级的进程,它与其他线程共享同一进程的内存和资源。
进程可拥有多个线程,线程之间可以并发执行。
(2)如何创建一个新的进程?在Linux C中,可以使用fork()函数创建新的进程。
fork()函数会创建一个与父进程一样的子进程,子进程在fork()函数之后继续执行,而父进程则继续执行fork()函数之前的代码。
3. 文件操作(1)如何打开一个文件并读取其中的内容?可以使用open()函数打开一个文件,使用read()函数读取文件的内容。
首先,通过open()函数打开一个文件,并指定打开模式(如只读、只写等)。
然后,使用read()函数读取文件的内容,将读取的内容保存到一个缓冲区中。
(2)如何对一个文件进行写操作?可以使用open()函数打开一个文件,并指定打开模式为可写。
然后,使用write()函数将要写入的内容写入文件中。
4. 线程(1)请解释什么是线程同步?线程同步是指多个线程之间按照一定的顺序和条件共享资源。
通过线程同步机制,可以确保多个线程能够有序地访问共享资源,避免数据不一致等问题。
(2)如何实现线程同步?在Linux C中,可以使用互斥锁(亦称互斥量)来实现线程同步。
互斥锁可以保证同一时间只有一个线程能够访问共享资源。
当一个线程获得互斥锁后,其他线程需要等待该线程释放互斥锁才能继续执行。
5. 网络编程(1)请解释什么是套接字?套接字是网络编程中一种用于进行网络通信的接口。
通过套接字,可以在不同主机之间建立连接,进行数据的传输和接收。
linux c语言面试题
linux c语言面试题1. 什么是Linux?Linux是一种开源操作系统,由Linus Torvalds于1991年首次发布。
它基于Unix操作系统的设计原则,具有稳定性、安全性和灵活性等优点,并广泛应用于各种设备和领域。
2. 什么是C语言?C语言是一种通用的高级编程语言,最初由丹尼斯·里奇在1972年设计并开发。
C语言具有直接控制硬件的能力,易于学习和使用,是Linux系统开发的首选语言之一。
3. 什么是编译和链接?编译是将源代码翻译成机器代码的过程,它将C语言代码转化为可执行文件。
链接是将编译后的目标文件与所需的库文件进行合并,生成最终的可执行文件。
4. Linux中的头文件和库文件有什么作用?头文件包含函数声明、宏定义和结构体等信息,通过#include指令将其包含到源代码文件中。
库文件包含预编译的二进制代码,可以提供给链接器使用。
5. 如何用GCC编译C程序?使用GCC编译C程序的命令格式为:```gcc -o output_file input_file.c```其中,output_file表示生成的可执行文件名,input_file.c表示要编译的C源文件。
6. Linux中的进程和线程有什么区别?进程是程序的执行实例,它具有独立的内存空间和资源。
线程是进程的执行单元,同一个进程内的多个线程共享内存和资源。
7. 什么是互斥锁和条件变量?互斥锁用于保护共享资源,确保同一时间只有一个线程可以访问。
条件变量用于线程之间的同步和通信,通过等待和唤醒来控制线程的执行顺序。
8. 如何在Linux中创建线程?在Linux中,可以使用pthread库来创建和管理线程。
通过包含pthread.h头文件并使用pthread_create函数,可以创建一个新的线程并指定其执行函数。
9. Linux中的信号是什么?信号是一种软件中断,用于通知进程发生了某个事件。
Linux中的信号可以被其他进程发送,例如通过kill命令发送SIGKILL信号终止一个进程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
、选择题(20题,共44 分)
1•常见的Linux发行版本有很多,下面不是Linux发行版本的是()。
[A] Red Hat Linux [B] Ubuntu Linux[C] X Window[D] SuSE Linux
2•下面不是对Linux操作系统特点描述的是()。
[A]良好的可移植性[B]单用户[C]多用户[D]多任务
3. 下面()命令不能用来显示文件的内容。
[A] more [B] less[C]find [D] cat
4 .查看创建目录命令mkdir 的帮助文档,可以使用命令()。
[A]mkdir -h [B] help mkdir[C]mkdir -p [D] man mkdir
5. 假设目录中存在若干文件(num 表示文件编号,1~10),使用以下(
)
通配符可以挑选出其中的编号为1、3、5的文件。
[A] file_*txt [B] flie_?.txt[C]file_[135].txt [D] file」八135].txt
6. 文件权限r-x-wxr--对应的八进制表示形式为()
[A] 0536 [B] 0654 [C] 0656[D]0534
7•在C语言中,要求运算数必须是整型的运算符是()。
[A] / [B] ++ [C] !=[D]%
8. C语言中,逻辑真”等价于()。
[A]大于零的数[B]大于零的整数[C]非零的数[D]非零的整数
9. 目前流行的两种软件包管理机制,Debian使用()软件包,Redhat使用()
[A] tgz[B]rpm [C] tar[D]deb
10. 下面函数的功能是()。
int fun (char*x)
{
char*y=x;
while(*y++);
return(y-x-1);
}
[A] 求字符串的xx
[B] 比较两个字符串的大小
[C] 将字符串x复制到字符串y
[D] 将字符串x连接到字符串y后面
11. C语言程序的三种基本程序是()。
[A]顺序结构,选择结构,循环结构软件包。
[B ]递归结构,循环结构,转移结构
[C] 嵌套结构,递归结构,顺序结构
[D] 循环结构,转移结构,顺序结构
12. 执行下面语句后的输出结果为( )。
int i = -1;
if (i < =0)
printf( “ **n*”* );
i = 2;
else
[A]**** [B] %% [C] %%%%[D有语法错误。
不能正确执行
13. 下面的程序运行结果为( )。
int main(void)
{
int x = 3, y = 1, z = 0;
}if(x = y + z)
printf( “ **** ” );
printf( “ %%n%”%);
else
printf( “ ####” );
[A]语法有错误,不能编译[B] **** [C] ####[D]能编译,不能连接
14. 下述程序的输出结果是( )。
int main(void)
{
int Y=100;
while(Y--);
printf( “ Y=%d” ,Y);
}
[A] Y=0 [B] Y =1[C] Y=-1 [D] Y=随机数
15. 结构体DATA定义如下,贝S sizeof(struct DATA的值为() struct DATA
float f1;
int i;
char c2;
};
[A] 6 [B] 8[C]12 [D] 16
16. 下述程序第二次的输出结果为( )。
{ externinta;
intb=0; 。
int main(void)
static intc;
a+=3;条件“ 2<x<或xv-10”的C语言表达式为
((x>2&&x<3)||x<10) )。
2•若有以下定义和语句,则*p[0]引用的是a数组元素中的(), *(p[1]+1)引用的是a数组元素中的()。
int *p[3], a[6], i;
for( i = 0; i < 3; i++) p[i] = &a[2*i];
3•若有以下输入(<CR代表回车换行符),则下面程序的运行结果为( 7 )。
1 ,2<CR>
int main(void)
}
4. shell 脚本的本质是(命令行解释器)。
5. gcc 的编译步骤按先后顺序分别为(预处理,编译,链接,运行)。
6. make工程管理器根据(文件的时间戳)来自动发现更新过的文件从而减少
编译的工作量。
四、简答题(2 题,每题5分,共10 分)
I.Shell是Linux内核与硬件的外部保护层,请在下图中标出Shell、Linux内核、硬件的位置,并简要介绍三者的交互过程。
int a[3][4]=
{1,2,3,4,5,6,7,8,9,10,11,12};
int (*p)[4], i, j;
p = a;
scanf( “ %d,%d” ,&i,&j);
printf( “n%”d, *(*(p+i)+j));
return 0;
LINUX shell li nux 内核硬件
2•大多Linux文件系统目录结构都遵循一定的标准,请根据右侧的目录职能描述,将左侧目录名连线。
/home E
/root H
/dev C
/mnt FA:存放系统中最常用的可执行文件(二进制)
B:存放Linux内核和系统启动文件,包括Grub、lilo启动器程序C:存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB tty等D:存放系统的所有配置文件,例如passwd 存放用户账户信息,hostname 存放主机名等
/boot B
/etc D
/bin A
五、编程题(3题,第1题6分,每题7分,共20分)
1. 打印出所有的“水仙花”数。
所谓“水仙花”数是指一个3位数,其各个位数字立方和等于该数本身。
E:用户主目录的默认位置
F:该目录通常用于作为被挂载的文件系统的挂载点
H:根用户(超级用户)的主目录
2. 下面findmax 函数将计算数组中的最大元素及其下标值,请编写该函数。
#include <>
void findmax ( int s[ ], int t, int *k )
{
Int i;
}
int main (void)
{
}int a[10] = {12, 23, 34, 45, 56, 67, 78, 89, 11, 22}, k=0;
findmax ( a, 10, &k );
printf (最犬元素为:%d,其下标值为:n”,a[k], k ); return 0;
3. 打印杨辉三角形前10 行。
(提示:定义数组
a[10][10]) 1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1。