随笔分类 -  c

摘要:c/c++ 学习互助QQ群:877684253 本人微信:xiaoshitou5854 阅读全文
posted @ 2020-04-14 22:47 小石王 阅读(323) 评论(0) 推荐(0) 编辑
摘要:说递归互斥量前,说下互斥量都有哪些,apue第三版上说有下面4种: PTHREAD_MUTEX_NORMAL:标准类型,不做任何特殊的错误检查或者死锁检测。 在同一个线程里去锁一个还没有解锁的互斥量时,发生死锁。 PTHREAD_MUTEX_RECURSIVE:递归类型。 此互斥量类型允许同一线程在 阅读全文
posted @ 2020-03-28 11:50 小石王 阅读(2996) 评论(0) 推荐(0) 编辑
摘要:下面程序的功能是,创建一片共享内存,让父进程和子进程都往里面写数据,但是要求,父进程或者子进程写完后,另一个进程才能开始写,所有就需要同步。 关键点 mutex占用的内存空间必须是共享内存 必须把mutexaddr的属性设置成PTHREAD_PROCESS_SHARED int\ shmptr2占用 阅读全文
posted @ 2020-03-27 17:01 小石王 阅读(1606) 评论(0) 推荐(0) 编辑
摘要:c 正则表达式 参考教程:https://github.com/ziishaned/learn regex/blob/master/translations/README cn.md 在linux下主要有三个函数,用于正则表达式 函数regcomp的参数cflags REG_EXTENDED 使用扩 阅读全文
posted @ 2019-09-09 17:55 小石王 阅读(1859) 评论(0) 推荐(0) 编辑
摘要:c++ 多态,就是利用了一个二级指针(指针数组),数组里的每个元素都指向了,用virtual修饰的成员函数。 既然提到了指针,那就让我们用内存地址来证明一下吧。 为了证明,我们必须要取到成员函数的首地址。利用下面的函数取得成员函数的地址 调用上面函数的方法: 1,首先我们先看看非多态的成员方法的内存 阅读全文
posted @ 2019-08-16 17:09 小石王 阅读(509) 评论(0) 推荐(0) 编辑
摘要:查看有没有安装MySQL: dpkg l | grep mysql 安装MySQL: apt install mysql server apt install mysql client apt install libmysqlclient dev 安装完成之后可以使用如下命令来检查是否安装成功: n 阅读全文
posted @ 2019-08-12 22:01 小石王 阅读(232) 评论(0) 推荐(0) 编辑
摘要:system v 共享内存 建立:进程与共享内存的关联关系 key_t key:16进制的非0数字。 一般有两种方式设置它。 第一种:调用fotk函数 第二种:直接使用IPC_PRIVATE 注意:如果两次调用ftok函数时,参数都一样,那么得到的key_t key是一样的,所以shmget函数的返 阅读全文
posted @ 2019-07-28 15:15 小石王 阅读(462) 评论(0) 推荐(0) 编辑
摘要:Linux 用libevent实现的简单http服务器 main.c libev.h libev.c c/c++ 学习互助QQ群:877684253 本人微信:xiaoshitou5854 阅读全文
posted @ 2019-07-09 18:58 小石王 阅读(3108) 评论(2) 推荐(0) 编辑
摘要:Linux 用epoll实现的简单http服务器 main.c epoll.h epoll.c c include include include include include include include "epoll.h" include include include include in 阅读全文
posted @ 2019-07-09 14:31 小石王 阅读(1593) 评论(1) 推荐(0) 编辑
摘要:初识Libevent libevent是用c写的高并发网络io库,只要有文件描述符,就都可使用libevent。 libevent使用回调函数(callback) 。 有了libevent,网络编程我有 1, FIFO的进程间通信。 利用FIFO的进程间通信read端: 利用FIFO的进程间通信wr 阅读全文
posted @ 2019-07-05 17:42 小石王 阅读(1110) 评论(0) 推荐(0) 编辑
摘要:本地套接字通信 利用本地套接字,也可以进程间通信。 本地套接字和有名管道一样都利用伪文件 管道的文件类型是p 本地套接字的文件类型是s。 当调用bind函数后,就会生成本地套接字对应的伪装文件 和网络套接字不同的地方是: 使用的结构体不一样,本地套接字使用: 客户都也必须调用bind函数 需要头文件 阅读全文
posted @ 2019-07-02 11:21 小石王 阅读(2443) 评论(0) 推荐(0) 编辑
摘要:广播和组播 广播,必须使用UDP协议,是只能在局域网内使用,指定接收端的IP为\ .\ .\ .255后,发送的信息,局域网内的所有接受端就能够接到信息了。 广播的发送端代码 注意点: 必须用setsockopt函数开通套接字的组播权限。注意n的值不能为0. 由于广播的时候,必须指定接收端的端口号, 阅读全文
posted @ 2019-07-01 18:38 小石王 阅读(1696) 评论(0) 推荐(0) 编辑
摘要:epoll函数用法,还有点poll和select 1,LT的epoll是select和poll函数的改进版。 特点是,读完缓冲区后,如果缓冲区还有内容的话,epoll_wait函数还会返回,直到把缓冲区全部读完。 2,ET的epoll(阻塞) 特点是,读完缓冲区后,不管缓冲区还有没有内容,epoll 阅读全文
posted @ 2019-06-30 16:10 小石王 阅读(1206) 评论(0) 推荐(0) 编辑
摘要:信号量(semaphore),也和互斥锁一样提供了线程间或者进程间的同步功能。 信号量有三种: "Posix有名字的信号量" Posix基于内存的信号量 System V信号量 信号量比互斥锁高级,互斥锁只允许一个线程访问临界区,信号量可以多个,可以把信号量看作成互斥锁的升级版,但是如果能用互斥锁解 阅读全文
posted @ 2019-06-22 19:10 小石王 阅读(814) 评论(0) 推荐(1) 编辑
摘要:信号量(semaphore),也和互斥锁一样提供了线程间或者进程间的同步功能。 信号量有三种: Posix有名字的信号量 "Posix基于内存的信号量" System V信号量 信号量比互斥锁高级,互斥锁只允许一个线程访问临界区,信号量可以多个,可以把信号量看作成互斥锁的升级版,但是如果能用互斥锁解 阅读全文
posted @ 2019-06-21 16:54 小石王 阅读(1331) 评论(0) 推荐(0) 编辑
摘要:线程的读写锁函数: 1,读写锁的初始化与销毁,静态初始化的话,可以直接使用PTHREAD_RWLOCK_INITIALIZER。 2,用读的方式加锁和尝试(没锁上就立即返回)加锁。 3,用写的方式加锁和尝试(没锁上就立即返回)加锁。 4,解锁 多个进程在同时读写同一个文件,会发生什么? 例子1:用下 阅读全文
posted @ 2019-06-20 11:10 小石王 阅读(2107) 评论(0) 推荐(0) 编辑
摘要:为什么有条件变量? 请参看 "一个线程等待某种事件发生" 注意:本文是linux c版本的条件变量和互斥锁(mutex),不是C++的。 mutex : mutual exclusion(相互排斥) 1,互斥锁的初始化,有以下2种方式。 调用方法的初始化:互斥锁是用malloc动态分配,或者分配在内 阅读全文
posted @ 2019-06-17 17:32 小石王 阅读(2775) 评论(0) 推荐(0) 编辑
摘要:线程基础函数 查看进程中有多少个线程,查看线程的LWP 执行结果:LWP列 线程共享的资源: 注意:信号和线程最好不要一起使用。又用信号又用多线程的架构不太合理。 文件描述符表 信号的处理方式 当前工作目录 用户ID和组ID 内存地址空间(.text/.data/.bss/heap/共享库,栈区(s 阅读全文
posted @ 2019-06-17 10:51 小石王 阅读(601) 评论(0) 推荐(0) 编辑
摘要:守护进程(Daemon) Daemon(精灵)进程,是linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的时间。一般采用以d结尾的名字。从下面的进程信息可以看出,守护进程都是【?】。 Linux后台的一些系统服务进程,没有控制终端,不能直接和用户交互。不受用户登 阅读全文
posted @ 2019-06-07 18:45 小石王 阅读(1011) 评论(0) 推荐(0) 编辑
摘要:一, "管道PIPE" 二, "FIFO通信" 三, "mmap通信" 四,信号的概念 信号的特点:简单,但不能携带大量的信息,满足特定条件就会发生 信号的机制:进程B发送信号给进程A。信号是由内核来处理的。 信号的产生: 按键产生:ctrl+c,ctrl+z,ctrl+\ Ctrl + c → 2 阅读全文
posted @ 2019-05-20 18:32 小石王 阅读(1263) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示