linux
KAIHINGWON
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
静态库和动态库
什么是库 库是写好的,现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。所谓静态、动态是指链接。将一个程序编译成可执行程序的步骤: 静态库 之所以称为【静态库】,是因为在链接阶段,会将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。因此对应的链接方式称为静态链接。 试想一下,静态库原创 2020-08-13 19:38:24 · 315 阅读 · 0 评论 -
GDB
GDB(GNU Debugger)是在Unix以及类Unix系统下的调试工具。功能极其强大,几乎涵盖了你所需要的全部功能。 GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的定制要求随心所欲的运行程序。 2.可让被调试的程序在你所指定的调置的断点处停住。 3.当程序被停住时,可以检查此时你的程序中所发生的事,以及内存状态等。 4.动态的改变你程序的执行环境。 gdb使用总旨:help指令很强大,在gdb里面输入:help all gdb使用前置条件: 用于编译时加入debug信息,gc原创 2020-08-10 22:53:42 · 177 阅读 · 0 评论 -
IO多路复用
流: 指可以进行I\O操作的内核对象 文件、管道、套接字等 流的入口:文件描述符(fd) 所有对流的读写操作,我们都可以称之为IO操作。 当一个流中没有数据,read的时候,或者流中已经写满数据,再write,IO操作就会阻塞 同步和异步: 1)同步指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行。 2)异步指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。 阻塞和非阻塞: 1)阻塞指IO操作需要彻底完成后才返回到用户空间。 2)非原创 2020-08-09 16:52:44 · 558 阅读 · 0 评论 -
进程间通信
- 管道 匿名管道: 有名管道: -消息队列 函数原型: // 创建和获取 ipc 内核对象 --IPC_CREAT int msgget(key_t key, int msgflag); // 将消息发送到消息队列 --IPC_NOWAIT int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); // 从消息队列获取消息 --IPC_NOWAIT/0 int msgrcv(int msqid, void *msgp, size_原创 2020-08-01 23:45:14 · 123 阅读 · 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 · 526 阅读 · 0 评论
分享