Linux应用程序开发复习 1

发布 2022-09-20 18:26:28 阅读 6885

快速入门。

linux文件系统和windows文件系统的区别:

windows文件系统是以驱动器为基础的,且每一个目录与相应的分区对应;而linux恰好相反,文件系统是一棵文件树,且它的所有文件和外部设备都以文件的形式挂在这个文件树上。

主分区,扩展分区和逻辑分区:

主分区的数量可以是1-3个;扩展分区也就是除主分区外的分区,它不能直接使用,必须再将它划分为若干个逻辑分区才可使用。

linux文件类型及属性:

linux的主要文件类型分为4种:普通文件,目录文件,链接文件,设备文件。linux中的文件属性:*rwxrwxrwx第一个字符*显示文件类型:

-”普通文件;“d”目录文件;“l”链接文件;“c”字符设备;“b”块设备;“p”命名管道;“f”堆栈文件;“s”套接字。

第一个rwx表示文件拥有者(u,user)对该文件的权限,无则用。

-”表示。第二个rwx表示文件用户组(g,group)对该文件的权限。第三个rwx表示系统其他用户(o,others)对该文件的权限。

//r代表read,w代表write,x代表execute.

linux文件目录结构:

bin这里存放linux常用操作命令的执行文件。

boot这个目录下存放操作系统启动时所要用到的程序。/dev该目录包含了所有linux系统中使用的外部设备。/etc该目录下存放了系统管理时要用到的各种配置文件和子目录。

etc/该目录主要存放了linux启动和关闭时要用到的脚本。

etc/该目录主要存放所有linux服务默认的启动脚本。

home该目录是linux系统中默认的用户工作根目录/lib该目录用来存放动态链接共享库/root该目录是超级用户登录时的主目录。

proc该目录用于放置系统核心与执行程序所需的一些信息。/sbin该目录用来存放系统管理员的常用的系统管理程序/tmp该目录用来存放不同程序执行时产生的临时文件/usr用户的很多应用程序和文件都存放在此目录。

usr/bin系统用户使用的应用程序。

usr/sbin超级用户使用的比较高级的管理程序和系统守护程序。

usr/src内核源**默认的放置目录。

srv该目录存放一些服务启动之后需要提取的数据/var服务的日志信息都存放在这里。

基础命令。shell是命令语言,命令解释程序及程序设计语言的统称。1.用户系统相关命令切换为超级用户su -root超级用户#,普通用户$

增加一个新的用户useradd tls设置用户账号密码passwd tls删除一个用户userdel tls锁定用户账户usermod -l tls2.系统管理命令。

显示当前系统中由该用户运行的进程列表ps查看所有进程及其pid,系统时间,命令详细目录,执行者等。ps -ef

输出特定的信号给指定pid的进程kill -9 74123.磁盘相关命令。

查看硬盘分区情况fdisk -l4.文件系统挂载命令。

将后面的设备以指定类型的文件格式装载到挂载点上mount -t vfat /dev/hda1 /mnt/win/clinux可以识别的文件系统:

vfat(fat32); ntfs; hpfs; ext2,ext3,nfs;iso96605.文件相关命令。

改变当前工作目录cd /home/d**id/显示当前工作目录pwdcd -前次目录cd ./当前目录cd ..上级目录。

列出目录的文件的信息ls -l列出目录中所有文件ls -a

在当前目录创建一个文件夹mkdir -p ./hello/my创建一个文件夹并设置权限mkdir -m 777 ./why将/my/why下所有文件复制到当前上当下,保留属性cp -a .

/my/why/ .

交互性移动mv -i ./my/why/ .删除全部目录和子目录rm -r ./why

改变拥有者chown root 改变组chgrp root 改变权限chmod a+rx,u+w 改变权限chmod 765

为某个文件在另一个位置建立一个符号链接in -s ..hello软链接与硬链接的异同:

in -s **是软链接,只会在用户待定的位置上生成一个文件的镜像,不会重复战胜磁盘空间。

in **是硬链接,在用户选定的位置上生成一个和源文件大小相同的文件。

无论是软链接还是硬链接,文件都保持同步变化。6.压缩打包相关命令。

对文件进行压缩和解压缩gzip -d对文件目录进行打包或解包tar -c

下的c编程基础。

vi的模式:

1.命令行模式:用户在vi编辑文件时,最初进入的为一般模式。可以进行“复制”“粘贴”等操作。

2.插入模式:在该模式下,用户才能进行文字编辑输入。3.底行模式:在该模式下,光标位于屏幕的底行,用户可以进行文件保存或退出操作。

gcc编译器。c c原始程序。

i已经预处理的c原始程序。s汇编语言原始程序。o目标文件。

gcc编译器的4个步骤:

1.预处理:对头文件和宏定义进行处理gcc -e -o

2.编译:检查**的规范性,并将其翻译成汇编语言gcc -s -o

3.汇编:把编译阶段生成的。s文件转成目标文件gcc -c -o 链接:链接函数库gcc -o hello链接库的分类:

静态库:编译链接时,将库文件的**全加入可执行文件中,生成文件大,但文件运行不要函数库。

动态库:在程序执行时加载库,以节省系统的开销。

makefile:

makefile基本结构:

1.需要由make工具创建的目标体,通常是目标文件或可执行文件。

2.要创建的目标体所依赖的文件3.创建每个目标体时需要运行的命令。例:

-c -o

功能,和在make调用目标体后汇编成。

makefile变量:

make允许在makefile中创建和使用变量,变量用来代替一个文本字符串。

makefile变量定义有两种方式:递归展开方式,简单方式。递归展开方式定义的变量是在引用该变量时进行替换的;简单扩展型变量的值在定义处展开。

递归展开方式的定义格式:var=var简单扩展方式的定义格式:var:=varmake中的变量使用均使用的格式为:$(var)。

自动变量:自动变量通常可代表编译语句**现目标文件和依赖文件等,并且具有本地含义。$^所有不重复的依赖文件$@目标文件的完整名称$《第一个依赖文件的名称。

?所有时间戳比目标文件晚的依赖文件,并且以空格分开。

makefile规则:

1.隐含规则:隐含规则告诉make怎么使用传统的规则完全任务,用户使用它们时就不必详细指定编译的具体细节,只需所目标文件列出即可。

2.模式规则:模式规则是用来定义相同处理规则的多个文件的。模式规则能引入用户自定义变量,为多个文件建立相同的规则,从而简化makefile的编写。

6.文件i/o编程。

系统调用:系统调用是指操作系统提供给用户程序调用的一。

组特殊接口,用户程序可以通过这组特殊接口来获得操作系统内核提供的服务。

用户编程接口:系统调用并不是直接与程序员进行交互的,实际使用中程序员调用的通常是用户编程接口。

区别:并不是所有的函数都一一对应一个系统调用,有时,一个api函数会需要几个系统调用来共同完成函数的功能。

系统命令:其相对api更高一层,实际上是一个可执行程序,它的内部引用了用户编程接口api来实现相应的功能。

底层文件i/o操作:文件锁:

文件锁包括建议性锁和强制性锁。建议性锁要求每个上锁文件的进程都要检查是否有锁存在,并且尊重已有的锁;强制锁是由内核执行的锁,当一个文件被上锁进行写入操作的时候,内核将阻止其他任何文件对其进行读写操作。fcntl( )不仅可施加建议锁,还可以施加强制性锁。

lockf( )用于对文件施加建议性锁。

i/o处理模型:

1.阻塞i/o模型:此模型下,若所调用的i/o函数没有完成相关的功能,则会使进程挂起,直到相关数据到达才会返回。

2.非阻塞模型:在这种模型下,当请求的i/o操作不能未完成时,则不让进程睡眠,而且立即返回。

多路转接模型:这种模型下,如果请求的i/o操作阻塞,且它不是真正阻塞i/o,而是让其中一个函数等待,在这期间,i/o还能进行其操作。

4.信号驱动i/o模型:这种模型下,通过安装信号处理程序,系统可以自动捕获特定信号的到来,从而启动i/o。

5.异步i/o模型:这种模型下,当一个描述符已准备好,可以启动i/o时,进程会通知内核。

i/o提供的3种类型的缓冲存储:

1.全缓冲:这种情况下,当填满标准i/o缓存后,才进行实际i/o操作。

2.行缓冲:这种情况下,输入和输出遇到行结束符时,标准i/o库执行i/o操作。

3.不带缓冲:标准i/o库不对字符进行缓冲。

7.进程控制开发。

linux下的进程结构:数据段,**段,堆栈段。linux下进程的执行模式:用户模式,内核模式。守护进程:守护进程不因用户,终端或者其他的变化而受到。

影响,它从被执行开始运转,直到整个系统关闭时才会退出。

守护进程创建过程:1.创建子进程,父进程退出。

fork( )创建子进程,exit( )使父进程退出。2.在子进程中创建新会话setsid( )创建新的会话3.

改变当前目录为根目录chdir(“/设置工作目录4.重设文件权限掩码umask(0)重设文件权限掩码5.关闭文件描述符close( )关闭文件描述符。

8.进程间通信。

linux进程间通信方式:1.管道及有名管道2.信号3.消息队列4.共享内存5.信号量6.套接字。

9.多线程编程。

线程间的同步与互斥:1.互斥锁线程控制。

互斥锁是用一种简单的加锁方法来控制对共享资源的原子操作。

互斥锁又分为:快速互斥锁,递归互斥锁,检错互斥锁;快速互斥锁:是指调用线程会阻塞直至拥有互斥锁的线程解锁为止;递归互斥锁:

能够成功返回,并且增加调用线程在互斥上加锁的次数;检错互斥锁:为快速互斥锁的非阻塞版本,它会立即返回并返回一个错误信息。2.

信号量。

信号量也就是操作系统中所用到的pv原子操作。

11.嵌入式linux设备驱动开发。

linux的设备分类:字符设备,块设备,网络设备。

数据库应用程序课程设计

课程设计教学大纲。课程名称 数据库应用程序课程设计。课程编号 0806905157 设计周数 1.5 设计学分 1.5 开设学期 第五学期。适用专业 计算机科学与技术。先修课程 数据库系统原理 vb 或c 或j a高级语言程序设计 软件工程等。一 目的和意义。数据库应用程序课程设计旨在使学生对数据库...

《高级应用程序设计》实验教学大纲

高级应用程序设计 实验教学大纲。课程编号 课程名称 高级应用程序设计 advanced applied programming 实验学时 12 适应专业 信息管理与信息系统专业。承担实验室 管理学院实验中心。一 实验教学的目的和要求。1 实验教学的目的 通过实验课程的学习,掌握和消化c语言中的高级内...

linux复习大纲 1

linux简答题 1.进程的启动模式分为哪几种?1 手动启动 前台启动后台启动。2 调度启动。系统启动过程是什么?1 bios自检 2 启动grub2 3 加载内核 4 执行systemd进程 5 执行 bin login程序 3.如何提高linux系统的安全性?1 部署防火墙 2 关闭不用的服务和...