版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
北京航天泰??萍记度胧絣inux筆試題目一、簡答題:1.請寫出實(shí)現(xiàn)后面幾個(gè)功能的Linux命令:顯示文件,拷貝,刪除Lsls-la:-l查看文件所有的信息,-a查看所有的文件,包括隱藏的文件。Cp/mnt/a.c/opt/do??while和while??do有什么區(qū)別?do??while至少執(zhí)行一次循環(huán)體,while??do先判斷循環(huán)條件再執(zhí)行循環(huán)體。Linux系統(tǒng)下.ko文件是什么文件?.so文件是什么文件?.so文件是動(dòng)態(tài)鏈接庫文件,相當(dāng)于win下的.dll文件。
.ko是內(nèi)核模塊文件,是內(nèi)核加載的某個(gè)模塊,一般是驅(qū)動(dòng)程序。如何使用vi進(jìn)行塊拷貝、粘貼、刪除的操作yy:復(fù)制鼠標(biāo)當(dāng)前所在行dd:刪除鼠標(biāo)當(dāng)前所在行nyy/dd:復(fù)制/刪除鼠標(biāo)所在行開始的n行p:粘貼復(fù)制內(nèi)容到鼠標(biāo)所在行G:移動(dòng)到文件尾〔大寫〕u:取消前一個(gè)動(dòng)作〔大寫〕:q:退出:w:保存:wq:保存退出:q?。簭?qiáng)行退出:w文件名:另存為如::whello:setnu:顯示行號(hào):setnonu:取消行號(hào)在Linux系統(tǒng)中,用來存放系統(tǒng)所需要的配置文件和子目錄的目錄是。/etc:該目錄下存放各種配置文件。對于PC上的linux系統(tǒng),/etc目錄下的目錄,文件非常多。如何使用gcc得到宏展開的中間代碼Gcc-E*.i*.c-c:編譯成把源文件目標(biāo)代碼,不做連接的動(dòng)作。-s:把源文件編譯成匯編代碼,不做匯編和連接的動(dòng)作。-E:只把源文件進(jìn)行預(yù)處理之后的結(jié)果輸出來。不做編譯,匯編,連接的動(dòng)作。如何使用gdb調(diào)試多進(jìn)程答:最常用的是attach方法,首先寫程序時(shí)在子進(jìn)程中調(diào)用sleep函數(shù)休眠30-60秒,將程序編譯成可執(zhí)行文件,后臺(tái)運(yùn)行可執(zhí)行文件,ps-furoot查看進(jìn)程號(hào),gdb,attach進(jìn)程號(hào),再使用stop暫停子進(jìn)程,設(shè)置一些斷點(diǎn)和一些watch,break設(shè)置斷點(diǎn),list命令觀察源代碼,step單步運(yùn)行,next運(yùn)行下一步,continue繼續(xù)運(yùn)行,print打印變量信息。用戶進(jìn)程間通信主要哪幾種方式管道、信號(hào)、消息隊(duì)列、共享內(nèi)存、信號(hào)量、套接字。線程同步的方法主要有:互斥鎖〔mutex〕和信號(hào)量解釋命令ls-amore具體含義。A:輸出所有文件,包括隱藏文件,m:橫向輸出文件名,并且中間以,號(hào)分開,r:列出子目錄下的文件,o與-l相似,輸出文件的詳細(xì)信息,不輸出組信息。LINUX中的管道指什么,重定向又指什么管道是linux中很重要的一種通信方式,它是把一個(gè)程序的輸出直接連接到另一個(gè)程序的輸入。11.請寫出以下代碼的輸出內(nèi)容#include“〞main(){inta,b,c,d;a=10;b=a++;c=++a;d=10*a++;printf("b,c,d:%d,%d,%d",b,c,d〕;return0;}A:13b:10c:12d:120B,c,d:10,12,12012.編寫一個(gè)函數(shù)intcharnum(charfn[10]),該函數(shù)以只讀方式翻開文件fn,,通過統(tǒng)計(jì),返回文件中字符的個(gè)數(shù),請使用while循環(huán)實(shí)現(xiàn)計(jì)數(shù)功能。請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)charnum的花括號(hào)中填寫假設(shè)干語句。文件kt7_2.cpp的內(nèi)容如下:#include#include#includeintcharnum(charfn[10]);voidmain(){intnum;num=charnum("abc.txt");cout<<"num="<<NUM<<ENDL;}Intcharnum(charfn[10]){fstreamfile;file.open(fn,ios::in);if(!file){cout<<"abc.txtcan'topen"<<endl;abort();}charch;inti=0;while(!file.eof()){file.get(ch);i++;}file.close();returni-1;}二、編程題13.如果有一個(gè)簡單的Test工程目錄如下:#treeTestTest1〕使用wildcard、patsubst函數(shù)編寫一個(gè)C++工程的Makefile文件14.編寫一個(gè)helloworld程序,要求以創(chuàng)立進(jìn)程的方式打印HelloWorld!#include<sys/types.h>#include<unistd.h>#include<stdio.h>#include<stdlib.h>Main(){Pid_tresult;Result=fork();If(result==-1){perror(fork);exit();}Elseif(result==0){printf(“hellowold〞);}if(result==0){printf(“hellowold〞);}}翻開一個(gè)文件,并讀取從第100字節(jié)開始的50字節(jié)數(shù)據(jù)。#include<sys/types.h>
#include<unistd.h>
#include
#defineMAX_LEN4096
intmain(intargc,char**argv)
{
intfd,i;
charbuf[MAX_LEN];
for(i=0;i<MAX_LEN;i++)
{
buf[i]=0;
}
if(argc!=2)
{
printf("Invalidargument!\n");
exit(1);
}
if((fd=open((char*)argv[1],O_RDONLY))==-1)
{
perror("Openfailed");
exit(1);
}
lseek(fd,100,SEEK_SET);
if(read(fd,buf,50)!=50)
{
perror("Readerror");
exit(1);
}
printf("%s\n",buf);
return0;
}16.編寫一對socket程序,要求類似于networkechoprocotol。Client每隔1秒把自己的IP地址輪流循環(huán)發(fā)送給一個(gè)Server.Server接到IP后,在屏幕上打印對方IP;然后把自己的IP發(fā)送回去。Client收到回復(fù)后,在屏幕上打印對方IP。程序一直運(yùn)行,直到用戶退出。各自分類統(tǒng)計(jì)接收到的各IP的數(shù)據(jù)包的個(gè)數(shù)。注意:Client可以向多個(gè)Server發(fā)送請求,Server也可以接收多個(gè)Client請求。請描述Linux下程序開發(fā)到執(zhí)行的工作流程〔結(jié)合自己的工程經(jīng)歷〕。開發(fā)arm-linux程序至少需要三種系統(tǒng):Windows系統(tǒng)。
主要用來文件傳送和一些簡單的文本文件編輯。這個(gè)系統(tǒng)其實(shí)并非必需,只是因?yàn)槟壳癙C機(jī)上最流行的系統(tǒng)仍然是Windows系統(tǒng),我們的很多關(guān)于PC的文件和數(shù)據(jù)的操作習(xí)慣都是在Windows系統(tǒng)上養(yǎng)成的,已經(jīng)對其形成了嚴(yán)重的依賴,所以Windows系統(tǒng)扮演著的“輔助開發(fā)系統(tǒng)〞的角色。PC-Linux系統(tǒng)。
在此系統(tǒng)上安裝arm-Linux交叉編譯器后,就可以對代碼文本文件進(jìn)行編譯,生成可在arm-Linux系統(tǒng)中運(yùn)行可執(zhí)行程序。此系統(tǒng)被稱為“Linux宿主機(jī)〞,我們對Linux程序的開發(fā)工作〔包括代碼編寫、調(diào)試和編譯生成可執(zhí)行文件〕根本上就是在此系統(tǒng)上進(jìn)行的。Arm-Linux系統(tǒng)。
Arm-Linux程序運(yùn)行的平臺(tái)。此系統(tǒng)的硬件載體是一塊小型的嵌入式arm板,我們在Linux宿主機(jī)上開發(fā)好程序并編譯生成arm-linux可執(zhí)行程序后,將可執(zhí)行程序文件傳送到嵌入式arm板中,然后就可以在arm板上直接運(yùn)行此程序了。結(jié)合自己的學(xué)習(xí)或工作感受簡述Linux與Windows編程的區(qū)別,嵌入式Linux與Windows的嵌入式OS〔如XPE、WinCE〕的區(qū)別。1.嘗試論述中斷產(chǎn)生,到中斷處理結(jié)束的詳細(xì)過程7’設(shè)備控制器或其他系統(tǒng)產(chǎn)生一個(gè)中斷,處理器結(jié)束當(dāng)前指令的執(zhí)行,處理器發(fā)送中斷應(yīng)答信號(hào),處理器將PSW和PC壓入堆棧,根據(jù)中斷,處理器加載新的PC值,保存剩余的處理狀態(tài),處理中斷,恢復(fù)處理狀態(tài)信息,恢復(fù)PC和PSW2.試闡述何時(shí)可能會(huì)導(dǎo)致進(jìn)程切換,以及進(jìn)程切換的詳細(xì)過程8'1、時(shí)鐘中斷,進(jìn)程允許執(zhí)行的時(shí)間片結(jié)束導(dǎo)致進(jìn)程切換2、IO中斷3、內(nèi)存失效4、發(fā)生錯(cuò)誤或異常,進(jìn)程被轉(zhuǎn)換到退出狀態(tài)5、系統(tǒng)調(diào)用,比方翻開文件,通常導(dǎo)致進(jìn)程為阻塞狀態(tài)解釋命令ls-a|more具體含義.ls-a是將當(dāng)前目錄下的文件名輸出到終端,而參加后面的|more是將輸出結(jié)果分頁顯示將test.c文件編譯輸出為test.elf帶上調(diào)試信息,可以用GDB調(diào)試用要經(jīng)歷四個(gè)相互關(guān)聯(lián)的步驟:預(yù)處理(也稱預(yù)編譯,Preprocessing)、編譯(Compilation)、匯編(Assembly)和連接(Linking)。預(yù)處理(Preprocessing):命令gcc首先調(diào)用cpp進(jìn)行預(yù)處理,在預(yù)處理過程中,對源代碼文件中的文件包含(include)、預(yù)編譯語句(如宏定義define等)進(jìn)行分析。編譯(Compilation):接著調(diào)用cc進(jìn)行編譯,這個(gè)階段根據(jù)輸入文件生成以.o為后綴的目標(biāo)文件。匯編(Assembly):匯編過程是針對匯編語言的步驟,調(diào)用as進(jìn)行工作,一般來講,.s為后綴的匯編語言源代碼文件和匯編.s為后綴的匯編語言文件經(jīng)過預(yù)編譯和匯編之后都生成以.o為后綴的目標(biāo)文件。連接(Linking):當(dāng)所有的目標(biāo)文件都生成之后,gcc就調(diào)用ld來完成最后的關(guān)鍵性工作,這個(gè)階段就是連接。在連接階段,所有的目標(biāo)文件被安排在可執(zhí)行程序中的恰當(dāng)位置,同時(shí),該程序所調(diào)用到的庫函數(shù)也從各自所在的檔案庫中連到適宜的地方。說明uclinux和linux的區(qū)別uclinux不具有的功能:1〕.沒有存儲(chǔ)管理單元2〕.不能運(yùn)行時(shí)增加進(jìn)程棧3〕.不支持分頁4〕.可執(zhí)行程序不是elf,而是flat5〕.不能用fork,而是用vfork6〕.RAMDISK7解釋下面一組GDB命令的含義.break94設(shè)置斷定,讓程序在執(zhí)行到第94行之前停止run運(yùn)行準(zhǔn)備調(diào)試的程序infoline121查看第121行設(shè)置的斷點(diǎn)的信息什么是鏈接腳本,其作用是什么請編寫一個(gè)簡單的鏈接腳本鏈接腳本主要用于規(guī)定如何把輸入文件內(nèi)的section放入輸出文件內(nèi),并控制輸出文件內(nèi)各局部在程序地址空間內(nèi)的布局.實(shí)例:以下腳本將輸出文件的textsection定位在0×10000,datasection定位在0×8000000:SECTIONS{.=0×10000;.text:{*(.text)}.=0×8000000;.data:{*(.data)}.bss:{*(.bss)}}解釋一下上述的例子:.=0×10000:把定位器符號(hào)置為0×10000(假設(shè)不指定,那么該符號(hào)的初始值為0)..text:{*(.text)}:將所有(*符號(hào)代表任意輸入文件)輸入文件的.textsection合并成一個(gè).textsection,該section的地址由定位器符號(hào)的值指定,即0×10000..=0×8000000:把定位器符號(hào)置為0×8000000.data:{*(.data)}:將所有輸入文件的.datasection合并成一個(gè).datasection,該section的地址被置為0×8000000..bss:{*(.bss)}:將所有輸入文件的.bsssection合并成一個(gè).bsssection,該section的地址被置為0×8000000+.datasection的大小.連接器每讀完一個(gè)section描述后,將定位器符號(hào)的值*增加*該section的大小.注意:此處沒有考慮對齊約束.編寫一個(gè)SHELL腳本程序,將當(dāng)前目錄及其子目錄中所有后綴為.O類型文件的文件名輸出到用戶指定的文件中.ls-a|*.o>result.txt請寫出5個(gè)LINUX根本系統(tǒng)調(diào)用的函數(shù)名稱.包括與設(shè)備文件的交互和與普通文件的交互的系統(tǒng)調(diào)用〔open,close,ioctl,create,unlink,...〕;與進(jìn)程相關(guān)的系統(tǒng)調(diào)用又包括進(jìn)程控制系統(tǒng)調(diào)用〔fork,exit,getpid,...〕,描述LINUX中字符設(shè)備驅(qū)動(dòng)的根本編寫框架.根據(jù)structfile_operations的數(shù)據(jù)結(jié)構(gòu),填充里面的如:open,write,close,ioctl等函數(shù)并進(jìn)行模塊的初始化和退出#include""stdio.h"intmain(){fork();printf("helloworld!/n");exit(0);}編譯hello.c生成hello可執(zhí)行文件在shell中執(zhí)行#forkhello便可以看到打印結(jié)果淺談bootloader,kelnel,filesystem三者之間的關(guān)系.嵌入式是linux啟動(dòng)過程如下。bootloader->kernel->filesystem->application先是bootloader,它是linux-kernel移植的基石,Bootloader是在系統(tǒng)啟動(dòng)之后、Kernel運(yùn)行之前所執(zhí)行的第一段代碼,其任務(wù)是為調(diào)用Kernel準(zhǔn)備必要的軟硬件環(huán)境。完成bootlaoder的移植后,就是kernel的移植。主要包括添加特定模塊的驅(qū)動(dòng),針對具體要求對內(nèi)核進(jìn)行配置。這里有兩點(diǎn)要注意:一是有些參數(shù)要與所用的bootloader向?qū)?yīng),如nand的分區(qū)參數(shù)。二是bootlaoder對特定模塊的驅(qū)動(dòng)在進(jìn)入kernel后便會(huì)有kernel接管,并有kernel重新驅(qū)動(dòng)文件系統(tǒng)主要是建立根文件和一些系統(tǒng)功能的實(shí)現(xiàn),如bash。用busybox很容易搞定。Linux系統(tǒng)下.ko文件是什么文件?.so文件是什么文件?Linux下面文件名不代表什么。但是從常識(shí)上講,.ko代碼是驅(qū)動(dòng)編譯成的格式,.so文件一般是動(dòng)態(tài)庫文件二維數(shù)組AA[3][7]的另外一種表示方法:*(AA[3]+7)*(*(AA+1)+7)請寫出以下代碼的輸出內(nèi)容#include“〞main(){inta,b,c,d;a=10;b=a++;c=++a;d=10*a++;printf("b,c,d:%d,%d,%d",b,c,d〕;return0;}輸出結(jié)果為:b,c,d:10,12,120嵌入式面試題一、ANSIC/C++局部<1>簡答題1、如何在C中為一個(gè)數(shù)組分配空間?2、如何初始化一個(gè)指針數(shù)組?3、s[10]的另外一種表達(dá)方式是什么?4、對〔-1.2345〕取整是多少?5、如何讓局部變量具有全局變量的生命期?6、C中的常量字符串應(yīng)在何時(shí)定義?7、如何在兩個(gè).C文件中引用對方的變量?8、a+++++b所表示的是什么意思?有什么問題?<2>問答題1、下面x,y,*p的值是多少,有什么問題? intx,y,z=2; int*p=&z; x=sizeof(*p); y=x/*p;2、一般使用malloc是,需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,如: char*s;s=(char*)malloc(21); 下面中???該如何填寫,才可以正確執(zhí)行強(qiáng)制類型轉(zhuǎn)換? int(*monthp)[31];monthp=(???)malloc(31);3、指針和數(shù)組的區(qū)別是什么?用一個(gè)簡單的聲明把它區(qū)分開。 指針和數(shù)組的聲明在什么情況下是相同的?4、C語言的左值(lalue)和右值(rvalue)的含義是什么?5、說明C語言中術(shù)語“聲明“〞定義“〞原型“的含義?6、編寫一個(gè)函數(shù),輸入一個(gè)整形數(shù),可以選擇按照8/10/16進(jìn)制輸出字符串;7下面是一個(gè)16*16的黑白圖標(biāo): staticunsignedshortstopwatch[]={16個(gè)數(shù)}; 如何修改聲明,可以使之在源代碼中形象的表現(xiàn)出圖像的摸樣?<3>分析題此題假設(shè)下面代碼中的變量都合法,調(diào)用外部的函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中職(紡織技術(shù)基礎(chǔ))紡織工藝階段測試試題及答案
- 2025年高職烹調(diào)工藝與營養(yǎng)(菜品研發(fā))試題及答案
- 2025年中職第一學(xué)年(會(huì)展禮儀)VIP客戶接待禮儀階段測試試題及答案
- 2025年高職衛(wèi)生檢驗(yàn)技術(shù)(衛(wèi)生檢驗(yàn)應(yīng)用)試題及答案
- 2025年中職中國影視作品鑒賞(國產(chǎn)劇賞析)試題及答案
- 2025年高職第二學(xué)年(會(huì)展策劃)活動(dòng)策劃專項(xiàng)測試試題及答案
- 2025年中職建設(shè)工程管理(工程安全管理)試題及答案
- 2025年大學(xué)生物(細(xì)胞結(jié)構(gòu)與功能)試題及答案
- 2025年高職編導(dǎo)(編導(dǎo)基礎(chǔ))試題及答案
- 2025年高職(旅游管理)旅游學(xué)基礎(chǔ)試題及答案
- 酒店物業(yè)管理合同范本
- 醫(yī)療質(zhì)量改進(jìn)中文書書寫能力提升路徑
- 血乳酸在急危重癥應(yīng)用的專家共2026
- STM32G4入門與電機(jī)控制實(shí)戰(zhàn)
- 2025年中共深圳市龍華區(qū)委黨校博士后公開招聘(廣東)筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- (12)普通高中技術(shù)與工程課程標(biāo)準(zhǔn)日常修訂版(2017年版2025年修訂)
- 2025年個(gè)人個(gè)人工作總結(jié)工作總結(jié)模版(2篇)
- (完整文本版)新概念英語第一冊單詞表默寫版1-144
- 教育技術(shù)學(xué)課件
- 前列腺癌診治教學(xué)查房課件
- 《公路橋涵養(yǎng)護(hù)規(guī)范》(5120-2021)【可編輯】
評(píng)論
0/150
提交評(píng)論