📄 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 + -