1、二、 实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述) 在登录了Linux系统之后常用的系统命令如下: 文件命令:cat、more、less,Is,cp,rm,mv命令; 目录命令:pwd,cd,mkdir、rmdir命令; 查找命令:find,grep命令; 进程命令:ps,kill命令; 联机帮助命令:man命令。VI编辑器的使用: 基本vi命令vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pa
2、ttern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename.filename :打开多个文件,依次进行编辑 :w 将缓冲区写入文件,即保存修改wq 保存修改并退出x 保存修改并退出q 退出,如果对缓冲区进行过修改,则会提示q! 强制退出,放弃修改查找替换/pattern 向后搜索字符串pattern?pattern 向前搜索字符串patternn 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个)N 上一个匹配(同上)%s/old/new/
3、g 搜索整个文件,将所有的old替换为new%s/old/new/gc 搜索整个文件,将所有的old替换为new,每次都要你确认是否替换复制粘贴dd 删除光标所在行dw 删除一个字(word)x 删除当前字符X 删除前一个字符D 删除到行末yy 复制一行,此命令前可跟数字,标识复制多行,如6yy,表示从当前行开始复制6行yw 复制一个字y$ 复制到行末p 粘贴粘贴板的内容到当前行的下面P 粘贴粘贴板的内容到当前行的上面p 有缩进的粘贴,vim会自动调节代码的缩进a 将内容放入/存入a寄存器,可以支持多粘贴板附:比如常用的一个寄存器就是系统寄存器,名称为+,所以从系统粘贴板粘贴到vim中的命令为
4、+p,注意此处的+不表示操作符,二十一个寄存器。移动光标在vim中移动光标跟其他的编辑器中有很大的区别,不过一旦学会了,就会飞速的在文本中移动了。三、主要仪器设备及耗材Ubuntu操作体统Vi编辑器第二部分:实验调试与结果分析(可加页)一、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)(1)进入ubuntu(2)打开终端teiminal(3)输入常见Linux命令测试(4)进入vi(5)在vi中进行输入,修改查找操作(6)退出VI二、 实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)PS:显示进程状态Free 显示系统中已用空闲内存
5、数量Ls:显示文件属性和目录内容进入vi编辑器三、 实验小结、建议及体会本次实验是我第一次接触Linux操作系统,通过本次实验我对Linux系统有了初步的了解。大体上掌握了Linux的常用命令。Linux下C编程 Linux下的C编程掌握vi编辑器的使用方法;掌握Linux下C程序的源程序编辑方法;编译、连接和运行方法。内容:设计、编辑、编译、连接以及运行一个C程序,其中包含键盘输入和屏幕输出语句。#include using namespace std;int main() int m; int temp=1; coutm; for(int i=1;i=m;i+) temp=temp*i;m
6、的阶乘是:temp; return 0;G+编译调试正常 这次实验的代码我是在Linux下的vi编辑器上书写的。通过这次实验vi编辑器有了进一步的应用,同时学会了在Linux进行简单的C语言编程。我不仅仅掌握Linux下C程序的源程序编辑方法;编译、连接和运行方法,更加熟悉了Linux的使用,在以后的学习过程中,会多加实践。SHELL编程和后台批处理三、 实验内容描述(问题域描述)掌握Linux系统的SHELL编程方法和后台批处理方法。 (1) 将编译、连接以及运行上述C程序各步骤用SHELL程序批处理完成,前台运行。(2) 将上面SHELLL程序后台运行。观察原C程序运行时输入输出情况。 (
7、3) 修改调试上面SHELL程序和C程序,使得在后台批处理方式下,原键盘输入内容可以键盘命令行位置参数方式交互式输入替代原键盘输入内容,然后输出到屏幕。四、 实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)test.cpp文件如下:#include int i, j; int a1010 = 0; a00 = 1; for(i=1; i=9; i+) for(j=0; j=i; j+) if(j=0) | (i=j) aij = 1; else aij = ai-1j-1 + ai-1j; for(i=0; cout aij; coutunistd.h
8、time.h while(1) char timebuf100; time_t t; time(&t); strftime(timebuf, sizeof(timebuf),%Y 年 %m 月 %d 日 %H: %M: %S,localtime(&t);timebufParent process id:getpid() pid_t iRet = fork(); if(iRet0)Create child process fail! else if(iRet = 0)Im child process, and id isppid is:getppid() elseCreate child pro
9、cess success childthe id is:iRet pid_t fork( void);(pid_t 是一个宏定义,其实质是int 被定义在#include中)返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1函数说明:一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间。linux将复制父进程的地址空间内容给子进程,因此,子进程有了独立的地址空间。fork会返回两次:由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。因为fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。在这次实验之前,我从没使用过fork方法,通过这次实验掌握Linux系统中进程控制原语fork的使用方法。同时我还发现自己对Linux有很多的不熟悉的地方,在以后会进一步加强。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1