?? ipage2.htm
字號:
<HTML xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns="http://www.w3.org/TR/REC-html40"><HEAD><TITLE>linux編程環境</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="Microsoft FrontPage 6.0" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<link rel="File-List" href="ipage2.files/filelist.xml">
<!--[if !mso]>
<style>
v\:* { behavior: url(#default#VML) }
o\:* { behavior: url(#default#VML) }
.shape { behavior: url(#default#VML) }
</style>
<![endif]--><!--[if gte mso 9]>
<xml><o:shapedefaults v:ext="edit" spidmax="1027"/>
</xml><![endif]-->
</HEAD>
<BODY background=images/back.gif>
<DIV align=center>
<CENTER>
<TABLE border=0 cellPadding=0 cellSpacing=0 height=382 width=717>
<TBODY>
<TR>
<TD colSpan=2 height=35 vAlign=bottom width=717><font size="4" color="#3D5063">
實驗</font><FONT color=#3d5063 size=4 style="CURSOR: hand">一熟悉linux的編程環境 </FONT><FONT color=#3d5063 size=2 style="CURSOR: hand"> </FONT></TD></TR>
<TR>
<TD colSpan=2 height=333 width=717>
<p class="MsoNormal" style="margin-left:18.0pt"> </p>
<p class="MsoNormal" style="margin-left:18.0pt">
<span style="font-family: 宋體; letter-spacing: -1pt">
<font color="#3D5063">題目:掌握<span lang="EN-US">Linux</span>操作系統的使用方法,包括鍵盤命令、系統調用,掌握在<span lang="EN-US">Linux</span>下的編程環境</font></span></p>
<p class="MsoNormal" style="text-indent: 15.75pt; text-autospace: none">
<font color="#3D5063"><span lang="EN-US" style="font-family:宋體"><font size="2">
(1)</font></span><span style="font-family:宋體"><font size="2">編一個<span lang="EN-US">C</span>程序,其內容為實現文件拷貝的功能;</font></span></font></p>
<p class="MsoNormal" style="text-autospace: none"><font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體"> </span><span style="font-size: 10.0pt; font-family: 宋體">設計分析:本小題的要求主要是掌握在<span lang="EN-US">linux</span>下的編程環境:熟悉函數庫<span lang="EN-US">glibc</span>,編譯器<span lang="EN-US">gcc</span>和<span lang="EN-US">linux</span>常用的命令。</span></font></p>
<p class="MsoNormal" style="text-autospace: none"><font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">
</span><span style="font-size: 10.0pt; font-family: 宋體">本題目程序<span lang="EN-US">copy.c</span>的源代碼如下:</span></font></p>
<p class="MsoNormal" style="text-indent: 30.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">#include<stdio.h></span></font></p>
<p class="MsoNormal" style="text-indent: 30.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">#include<stdlib.h></span></font></p>
<p class="MsoNormal" style="text-autospace: none"><font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體"> </span></font></p>
<p class="MsoNormal" style="text-indent: 30.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">void main(int
argc,char * argv[]){</span></font></p>
<p class="MsoNormal" style="text-indent: 50.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">FILE * filein,*
fileout;</span></font></p>
<p class="MsoNormal" style="text-indent: 50.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">if(argc !=3){</span></font></p>
<p class="MsoNormal" style="text-indent: 80.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">printf("Arguments
error\n");</span></font></p>
<p class="MsoNormal" style="text-indent: 80.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">exit(-1);</span></font></p>
<p class="MsoNormal" style="text-indent: 50.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">}</span></font></p>
<p class="MsoNormal" style="text-indent: 50.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">if((filein=fopen(argv[1],"r"))==NULL){
/*</span><span style="font-size: 10.0pt; font-family: 宋體">打開源文件<span lang="EN-US">*/</span></span></font></p>
<p class="MsoNormal" style="text-indent: 80.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">printf("Can't open
%s\n",argv[1]);</span></font></p>
<p class="MsoNormal" style="text-indent: 80.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">exit(-1);</span></font></p>
<p class="MsoNormal" style="text-indent: 50.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">}</span></font></p>
<p class="MsoNormal" style="text-indent: 50.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">if((fileout=fopen(argv[2],"w"))==NULL){
/*</span><span style="font-size: 10.0pt; font-family: 宋體">打開目的文件<span lang="EN-US">*/</span></span></font></p>
<p class="MsoNormal" style="text-indent: 80.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">printf("Can't open
%s\n",argv[2]);</span></font></p>
<p class="MsoNormal" style="text-indent: 80.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">exit(-1);</span></font></p>
<p class="MsoNormal" style="text-indent: 50.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">}</span></font></p>
<p class="MsoNormal" style="text-indent: 50.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">while(!feof(filein))</span></font></p>
<p class="MsoNormal" style="text-indent: 50.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">
putc(getc(filein),fileout); /*</span><span style="font-size: 10.0pt; font-family: 宋體">拷貝文件<span lang="EN-US">*/</span></span></font></p>
<p class="MsoNormal" align="center" style="text-align: center; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體"> </span></font></p>
<p class="MsoNormal" style="text-indent: 50.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">fclose(filein);</span></font></p>
<p class="MsoNormal" style="text-indent: 50.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">fclose(fileout);</span></font></p>
<p class="MsoNormal" style="text-indent: 30.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">}</span></font></p>
<p class="MsoNormal" align="left" style="text-align: left; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體"> </span>
</font></p>
<p class="MsoNormal" align="left" style="text-align: left; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體"> </span></font></p>
<p class="MsoNormal" align="left" style="text-align: left; text-indent: 30.0pt; text-autospace: none">
<font color="#3D5063"><span style="font-size: 10.0pt; font-family: 宋體">調試分析:在<span lang="EN-US">linux</span>下,由<span lang="EN-US">c</span>語言編寫的程序可由<span lang="EN-US">gcc</span>編譯、連接成可執行文件。</span></font></p>
<p class="MsoNormal" align="left" style="text-align: left; text-indent: 30.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體"> </span>
<span style="font-size: 10.0pt; font-family: 宋體">本程序的調試命令為:<span lang="EN-US">gcc
–o copy copy.c</span>;</span></font></p>
<p class="MsoNormal" align="left" style="text-align: left; text-indent: 30.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體"> </span>
<span style="font-size: 10.0pt; font-family: 宋體">本程序的執行命令為:<span lang="EN-US">./copy</span></span></font></p>
<p class="MsoNormal" align="left" style="text-align: left; text-indent: 30.0pt; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體"> </span><span style="font-size: 10.0pt; font-family: 宋體">在<span lang="EN-US">linux-2.4.20-8</span>下程序編譯通過并能實現要求的功能。</span></font></p>
<p class="MsoNormal" align="left" style="text-align: left; text-autospace: none"> </p>
<p class="MsoNormal" align="left" style="text-align: left; text-autospace: none"> </p>
<p class="MsoNormal" align="left" style="text-align: left; text-autospace: none"> </p>
<p class="MsoNormal" align="left" style="text-align: left; text-autospace: none"> </p>
<p class="MsoNormal" align="left" style="text-align: left; text-autospace: none"> </p>
<p class="MsoNormal" align="left" style="text-align: left; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">(2)</span><span style="font-family:宋體"><font size="2">編一個<span lang="EN-US">C</span>程序,其內容為分窗口同時顯示三個并發進程的運行結果。要求用到<span lang="EN-US">Linux</span>下的圖形庫。
</font></span></font></p>
<p class="MsoNormal"><font color="#3D5063"><span style="font-family:宋體">
<font size="2"><span lang="en-us"> </span>設計分析:本題目的要求是應用<span lang="EN-US">linux</span>的圖形編程工具<span lang="EN-US">gtk</span>進行<span lang="EN-US">linux</span>環境下的圖形界面編程。</font></span><span lang="EN-US" style="font-family:宋體"><font size="2">gtk</font></span><span style="font-family:宋體"><font size="2">是具有<span lang="EN-US">OO</span>特色的<span lang="EN-US">C</span>語言框架,編寫<span lang="EN-US">gtk</span>程序需遵循一定的步驟:初始化<span lang="EN-US">gtk</span>(通過<span lang="EN-US">gtk_init()</span>函數實現);建立控件;登記消息與消息處理函數;執行消息循環函數</font><span lang="EN-US"><font size="2">gtk_main().</font></span></span></font></p>
<p class="MsoNormal" style="text-indent:21.0pt"><span style="font-family:宋體">
<font size="2" color="#3D5063">題目要求結合并發進程進行編程,除了單獨編寫三個<span lang="EN-US">gtk</span>界面程序外,還需要將它們并發執行。為此程序由四個子程序組成。</font></span></p>
<p class="MsoNormal" style="text-indent: 10.5pt">
<span lang="EN-US" style="font-family:宋體"><font size="2" color="#3D5063"> </font></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:宋體">
<font size="2" color="#3D5063"> </font></span></p>
<p class="MsoNormal"><span style="font-family:宋體">
<font size="2" color="#3D5063">程序<span lang="EN-US">main.c</span>是實現三個<span lang="EN-US">gtk</span>程序并發的主程序,其內容如下:</font></span></p>
<p class="MsoNormal"><font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">#include <stdio.h></span></font></p>
<p class="MsoNormal" align="left" style="text-align: left; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">#include <unistd.h></span></font></p>
<p class="MsoNormal" align="left" style="text-align: left; text-autospace: none">
<font color="#3D5063">
<span lang="EN-US" style="font-size: 10.0pt; font-family: 宋體">#include <sys/types.h></span></font></p>
<p class="MsoNormal" align="left" style="text-align: left; text-autospace: none">
<font color="#3D5063">
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -