UNIX环境
文章平均质量分 73
Amo-wintercs
神的随波逐流~
展开
-
静态库、共享库的封装与使用
静态库 就是目标文件的集合,调用静态库文件就是把静态库中二进制指令拷贝到你的可执行文件中 优点:速度相对比共享库较快,可执行文件运行时不需要依赖静态库 缺点:可执行文件相对较大,当静态库修改后,可执行文件需要重新编译。例如现在有一个hello函数需要封装1、编写hello.c文件#include <stdio.h>void hello(void){ printf("hello,world\n");}2、编译hello.c文件生成目标文件hello.ogcc -c原创 2021-05-31 16:37:16 · 225 阅读 · 0 评论 -
UNIX Environmental programming Week2.Day5
进程间通信基本概念什么是进程间通信 是指两个或多个进程之间交互数据的过程,因为进程之间是相互独立的,为了能够让多个进程协同工作必须交换数据进程间通信的分类 简单的进程间通信:信号、文件、环境变量、命令行参数 传统的进程间通信:管道文件 XSI进程间通信:共享内存、消息队列、信号量 网络进程通信:Socket套接字传统的进程间通信 管道是UNIX最古老的进程间通信方式,古老意味着所有系统都支持,早期的管道是半双工的,现在有些系统的管道是全双工 管道就是一种特殊的文件原创 2021-03-12 16:48:24 · 91 阅读 · 0 评论 -
UNIX Environmental programming Week2.Day4
进程的正常退出 1、在main函数中执行return n语句,该返回值可以被父进程接收 2、调用了exit函数,该函数是标准库函数 void exit(int status); 功能:在任意时候调用了此函数都可以结束进程 status:结束状态码,与return函数中的返回值效果一样 注意:该函数不会返回 进程退出前完成 int atexit(void (*functioin)(void)); 功能:注册一个进程结束前要执行的函数 int on_e原创 2021-03-11 16:52:37 · 75 阅读 · 0 评论 -
UNIX Environmental programming Week2.Day3
进程基本概念进程与程序 程序就是存储在磁盘上的可执行文件,程序被夹在到内存中开始运行进程 一个程序被多次加载时生成了多个进程 进程就是处于活动状态的计算机程序进程的分类 进程一般分成三个类型:交互进程,批处理进程,守护进程 守护进程一般处于活跃状态,运行在后台由系统一开机的时通过批处理或者启动脚本决定的来自动创建的查看进程 简单的方式 ps 显示当前用户有控制终端的进程信息 列表方式 ps auxw 显示所有进程的详细信息 a 所有用户的控制终端的进程 u 显示进程原创 2021-03-10 20:25:52 · 111 阅读 · 0 评论 -
UNIX Environmental programming Week2.Day2
信号处理基本概念1、中断 当程序接受信息后中止当前执行的程序,转而执行其它任务,等其它任务执行完成后再返回、这种执行模式叫中断、 分为硬件中断和软件中断。2、信号 是一种软件中断、由操作系统发出、程序接受到后会执行相对应的操作常见信号产生条件效果SIGINT(2)Ctrl+C终止SIGQUIT(3)Ctrl+\终止+coreSIGFPE(8)除0终止+coreSIGKILL(9)终止信号终止SIGSEGV(11)非法内存原创 2021-03-09 18:39:57 · 122 阅读 · 0 评论 -
UNIX Environmental programming Week2.Day1
文件同步 1、在写入数据时,内存与磁盘之间有一个缓冲区,降低读写次数提高读写效率。 2、但这种机制带来的后果就是磁盘中的数据与实际写入的数据不匹配,那么系统提供三个函数可以让缓冲区 中的数据立即写入到磁盘上 #include <unistd.h> void sync(void); 功能:把缓冲区中的数据同步到磁盘 注意:并不会等待数据同步结束才返回,而是把缓冲区的数据先放到写入的队列中,然后立即返回 int fsync(int fd); 功能:把指定的文件的内容从原创 2021-03-08 16:49:51 · 102 阅读 · 0 评论 -
UNIX Environmental programming Week1.Day4
系统调用(系统API) 就是操作系统提供的一些功能供程序员使用,这些系统调用已经被封装成了C函数的形式,但它们不是标准C的一部分 一般应用程序运行在用户态[0,3g),使用系统调用时进入内核态进行系统调用(3,4g) 常用的标准库函数大部分都在用户态,底层偶尔也会调用系统,但是少部分在内核态例如malloc 系统调用的代码时内核的一部分,其外部接口以共享库函数的形式提供(linux-gate.so\ld-linux.so),并且这些接口的实现利用软中断进入到内核执行其真正的系统调用代码。原创 2021-03-05 17:24:14 · 110 阅读 · 0 评论 -
UNIX Environmental programming Week1.Day3
内存管理用户层 STL 自动分配/自动释放的能力 调用了C++库的函数 C++ new/delete 调用了C语言 C语言 malloc/free 调用了POSIX POSIX brk/sbrk 调用了linux Linux mmap/munmap 调用了内核kernal系统层 kernal kmalloc/vmalloc 调用了驱动 driver get_free_page进程映像 程序原创 2021-03-04 16:12:41 · 91 阅读 · 1 评论 -
UNIX Environmental programming Week1.Day2
库 库文件就是目标文件的集合,可以被其他代码调用,把代码封装成库文件后方便使用。方便管理,安全性高,保密性强。静态库 就是目标文件的集合,调用静态库文件就是把静态库中二进制指令拷贝到你的可执行文件中 优点:速度相对比共享库较快,可执行文件运行时不需要依赖静态库 缺点:可执行文件相对较大,当静态库修改后,可执行文件需要重新编译。制作静态库 1、编译出目标文件 gcc -c code.c 2、打包目标文件生成静态库 ar -r libxxx.a a.o b.o c.o 3原创 2021-03-03 18:06:21 · 111 阅读 · 1 评论 -
UNIX Environmental programming Week1.Day1
UNIX系统介绍: 1970贝尔实验室,坐着丹尼斯·里奇,肯·汤普逊 最早的多用户,多任务,支持多种处理器架构,高安全性,高可靠性,高稳定性的系统 技能架构大型商业的关键性的商用服务器,也能支持嵌入性设备 MINIX基于微内核架构的类UNIX操作系统,由此linux之父林纳斯·托瓦茨受到启发,才开发了第一个版本的linuxLINUX系统介绍: Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月原创 2021-03-02 16:55:59 · 100 阅读 · 0 评论