![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
KAIHINGWON
这个作者很懒,什么都没留下…
展开
-
静态库和动态库
什么是库库是写好的,现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。所谓静态、动态是指链接。将一个程序编译成可执行程序的步骤:静态库之所以称为【静态库】,是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。试想一下,静态库原创 2020-08-13 19:38:24 · 225 阅读 · 0 评论 -
GDB
GDB(GNU Debugger)是在Unix以及类Unix系统下的调试工具。功能极其强大,几乎涵盖了你所需要的全部功能。GDB主要帮忙你完成下面四个方面的功能:1.启动你的程序,可以按照你的定制要求随心所欲的运行程序。2.可让被调试的程序在你所指定的调置的断点处停住。3.当程序被停住时,可以检查此时你的程序中所发生的事,以及内存状态等。4.动态的改变你程序的执行环境。gdb使用总旨:help指令很强大,在gdb里面输入:help allgdb使用前置条件:用于编译时加入debug信息,gc原创 2020-08-10 22:53:42 · 111 阅读 · 0 评论 -
IO多路复用
流:指可以进行I\O操作的内核对象文件、管道、套接字等流的入口:文件描述符(fd)所有对流的读写操作,我们都可以称之为IO操作。当一个流中没有数据,read的时候,或者流中已经写满数据,再write,IO操作就会阻塞同步和异步:1)同步指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行。2)异步指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。阻塞和非阻塞:1)阻塞指IO操作需要彻底完成后才返回到用户空间。2)非原创 2020-08-09 16:52:44 · 467 阅读 · 0 评论 -
进程间通信
- 管道匿名管道:有名管道:-消息队列函数原型:// 创建和获取 ipc 内核对象 --IPC_CREATint msgget(key_t key, int msgflag);// 将消息发送到消息队列 --IPC_NOWAITint msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg);// 从消息队列获取消息 --IPC_NOWAIT/0int msgrcv(int msqid, void *msgp, size_原创 2020-08-01 23:45:14 · 72 阅读 · 0 评论 -
互斥锁、自旋锁、读写锁、条件变量、信号量
互斥锁、自旋锁、读写锁、条件变量、信号量互斥锁加锁 -> 阻塞(睡眠等待sleep)-> 解锁。阻塞时会进行上下文切换,CPU可进行其他工作。函数原型:#include <pthread.h>#include <time.h>// 初始化一个互斥锁。int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);// 对互斥锁上锁,若互原创 2020-07-07 18:25:17 · 447 阅读 · 0 评论