
Linux高编
[T]
这个作者很懒,什么都没留下…
展开
-
Unix Socket(Linux)
一、介绍Unix Socket是进程通信之一,Unix Socket类似与TCP/IP通信。该通信不依赖与IP,而实依赖与一个文件。在许多应用中都用到了该通信,如MySQL,在MySQL的配置文件中就有一项是本地Unix Socket通信的路径配置。二、函数介绍1、创建Socketint socket(int domain, int type, int protocol);返回值: 成功:创建SocketID 失败:-1参数: domain:AF_UNIX type: SOC原创 2022-04-27 19:40:08 · 2240 阅读 · 0 评论 -
动态链接库(dlopen、dlsym、dlclose)(Linux)
一、介绍动态链接,是在程序已经执行时,加载链接的方法二、有关动态链接库生成1、在导出处使用 extern "C"申明extern "C"{ void fun1() { ... } void fun2() { ... }}2、在链接时使用 -fPIC。fPIC是说明该库与位置无关,可以通过全局偏移表(GOT)访问地址1、终端/makefilegcc main.cpp -fPIC -shared -原创 2022-04-23 12:08:18 · 1824 阅读 · 0 评论 -
信号(Linux)
一、介绍进程之间发送信号,信号作为进程通信的一种。二、函数接口头文件<signal.h>typedef void (*sighandler_t)(int);1、信号处理函数注册sighandler_t signal(int signum, sighandler_t handler);参数: signum:信号 handler:处理函数2、发送信号int kill(pid_t pid, int sig);返回值: 成功:0 失败:-原创 2022-04-05 20:44:35 · 66 阅读 · 0 评论 -
fifo与pipe
一、介绍进程通信中的有名管道(fifo)与无名管道(pipe)特点 fifo pipe 使用场景 任意进程之间 具有亲缘的进程 通信 全双工 半双工 定位 不支持 不支持 长度上限 4K 4K 二、相关函数接口1、pipe头文件<stdio.h>1、打开int pipe(int fildes[2]);返回值: 成功:0 失败:-1参数: fild...原创 2022-04-05 20:04:18 · 310 阅读 · 0 评论 -
多路IO复用(Linux)
一、介绍多路IO复用,是通过系统底层对描述符事件的检测,通过描述符集合返回,通过描述符集合实现对单一句柄操作多路IO复用有三种:(1)select(2)poll(3)epoll对比:特点 select poll epoll 句柄个数 32位<1024 64位 <2048 无限制 无限制 平台 POSIX Linux Linux 监听方式 轮...原创 2022-04-04 22:47:35 · 1411 阅读 · 0 评论 -
线程池(linux)
一、实现目标创建一个线程集合,限定线程个数的最大值和最小值,根据任务数量自动动态调整当前线程个数。二、实现原理1、线程数量控制2、实现原理通过以下方式实现工作线程等待阻塞pthread_mutex_lock()上锁,pthread_cond_wait()等待,等待过程分解为为:解锁--条件满足--加锁pthread_mutex_unlock()解锁。(1)当任务队列添加之后使用pthr...原创 2022-04-04 21:53:27 · 235 阅读 · 0 评论 -
线程与线程控制(Linux)
一、介绍线程作为系统执行的最小单位,同一个进程之间的不同线程仅存在私有栈区,除此之外全部共享。二、线程函数介绍头文件#include <pthread.h>在编译时需要链接动态库 gcc main.c -o app -lpthread1、创建线程int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);原创 2022-03-27 12:32:20 · 580 阅读 · 0 评论