北京航天泰睿科技有限公司 嵌入式linux笔试题目 一、 简答题:
1. 请写出实现后面几个功能的Linux命令:显示文件,拷贝,删除
Ls ls -la: -l查看文件所有的信息,-a查看所有的文件,包括隐藏的文件。 Cp /mnt/a.c /opt/ Rm /mnt/a.c
2. do??while和while??do有什么区别?
do??while至少执行一次循环体,while??do先判断循环条件再执行循环体。 3. Linux系统下.ko文件是什么文件?.so文件是什么文件?
.so 文件是动态链接库文件,相当于 win下的 .dll 文件。
.ko 是内核模块文件,是内核加载的某个模块,一般是驱动程序。
4. 如何使用vi进行块拷贝、粘贴、删除的操作
yy:复制鼠标当前所在行 dd:删除鼠标当前所在行
nyy/dd:复制/删除鼠标所在行开始的n行 p:粘贴复制内容到鼠标所在行 G:移动到文件尾(大写) u:取消前一个动作(大写) :q :退出 :w :保存 :wq :保存退出 :q! :强行退出
:w 文件名:另存为 如::w hello :set nu :显示行号 :set nonu:取消行号
5. 在Linux系统中,用来存放系统所需要的配置文件和子目录的目录是。
/etc :该目录下存放各种配置文件。对于PC上的linux系统,/etc目录下的目录,文件非常多。 6. 如何使用gcc得到宏展开的中间代码
Gcc -E *.i *.c
-c:编译成把源文件目标代码,不做连接的动作。
-s:把源文件编译成汇编代码,不做汇编和连接的动作。
-E:只把源文件进行预处理之后的结果输出来。不做编译,汇编,连接的动作。
7. 如何使用gdb调试多进程 答:最常用的是attach方法,
首先写程序时在子进程中调用sleep函数休眠30-60秒,将程序编译成可执行文件,后台运行可执行文件,ps -fu root查看进程号,gdb,attach进程号,再使用stop暂停子进程,设置一些断点和一些watch,break设置断点,list命令察看源代码,step单步运行,next运行下一步,continue继续运行,print打印变量信息。 8. 用户进程间通信主要哪几种方式
管道、信号、消息队列、共享内存、信号量、套接字。 线程同步的方法主要有:互斥锁(mutex)和信号量 9. 解释命令ls -amore具体含义。
A:输出所有文件,包括隐藏文件,m:横向输出文件名,并且中间以,号分开,r:列出子目录下的文件,o与-l相似,输出文件的详细信息,不输出组信息。 10. LINUX中的管道指什么,重定向又指什么
管道是linux中很重要的一种通信方式,它是把一个程序的输出直接连接到另一个程序的输入。
11. 请写出下列代码的输出内容
#include “stdio.h” main() {
int a,b,c,d; a=10; b=a++; c=++a; d=10*a++;
printf(\,c,d:%d,%d,%d\,b,c,d); return 0;}
A:13 b:10 c:12 d:120 B,c,d:10,12,120
12. 编写一个函数int charnum(char fn[10]),该函数以只读方式打开文件fn,,通过统计,返回文件中字符的个数,请使用while循环实现计数功能。 请勿修改主函数main和其他函数中的任何内容,仅在函数charnum的花括号中填写若干语句。 文件kt7_2.cpp的内容如下: #include #include #include
int charnum(char fn[10]); voidmain() { intnum;
num=charnum(\cout<<\}
Int charnum(char fn[10])
{
fstream file;
file.open(fn,ios::in); if(!file)
{cout<<\ abort();} char ch; int i=0;
while(!file.eof()) {file.get(ch); i++;} file.close(); return i-1;
}
二、编程题
13. 如果有一个简单的Test项目目录如下: # tree Test Test
|-- common.h |-- main.cpp |-- test.cpp `-- test.h
1)使用wildcard、patsubst函数编写一个C++项目的Makefile文件
2)使用automake、autoconfig编写一个支持configure选项的configure.in脚本 14. 编写一个hello world程序,要求以创建进程的方式打印Hello World! #include

