![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux c
文章平均质量分 84
欢欢喜欢欢欢喜喜
这个作者很懒,什么都没留下…
展开
-
万能的makefile模板
############################################################### 简洁通用的Makefile文件(Ver 1.1)## Smart Makefile for general purpose (Ver 1.1)## Author: 汤 永康 Yongkang TANG <tangyk%at%gmail>## License: FreeBSD ## Please use this makefile at YOUR OWN R.原创 2020-08-16 17:29:47 · 240 阅读 · 0 评论 -
libev学习
一. libev简介https://hottaro.com/index.php?mid=OpenSourceLib&document_srl=7957二.安装及运行https://www.cnblogs.com/charlesblc/p/6078802.html三.原理学习1.基于reactor模式: 线程池+事件驱动(基于I/O多路复用 reactor通过I/O多路复用机制, 监听多个事件处理器, 一旦该种事件发生, 调用对应的callbac...原创 2020-08-06 16:30:36 · 1283 阅读 · 0 评论 -
信号
信号基本概念:https://blog.csdn.net/qq_38410730/article/details/81193118原创 2020-01-01 00:19:42 · 79 阅读 · 0 评论 -
进程
Linux进程的创建与管理https://blog.csdn.net/qq_38410730/article/details/81193118Linux 进程--父进程查询子进程的退出状态https://www.cnblogs.com/gwyy/p/8611398.html进程间通信:https://www.cnblogs.com/zgq0/p/8780893.html匿名...原创 2019-12-31 00:10:05 · 82 阅读 · 0 评论 -
跳越函数的setjmp和longjmp函数
https://blog.csdn.net/chenyiming_1990/article/details/8683413原创 2019-12-29 22:06:41 · 81 阅读 · 0 评论 -
线程池-条件变量
main.c#include "jobBase.h"#include "job.h"#include "myThreadPool.h"#include <stdio.h>#include <pthread.h>#include <unistd.h>using namespace std;using namespace ThreadPool;u...原创 2019-12-29 14:17:35 · 201 阅读 · 0 评论 -
修改虚拟机的IP地址
参考:https://www.cnblogs.com/brankoliu/p/10850059.html原创 2019-12-29 13:59:00 · 318 阅读 · 0 评论 -
win10调试linux
参考https://blog.csdn.net/mumufan05/article/details/80094637我的步骤:1.下载https://github.com/robotdad/vclinux2.将其拷贝到Linux解压3.为自己的代码写一个makefile,在网上找的通用模板,根据自己的编译选项稍作了修改##################################...原创 2019-12-28 15:16:25 · 174 阅读 · 0 评论 -
C语言-多线程与内存池、多线程与队列、多线程与内存池与队列的结合使用
一、多线程与内存池的结合使用:一个线程memorymalloc,另一个线程memoryfree,效率是malloc\free的1.3倍(单线程时是3倍,本来双线程应该是6倍,但因为使用了线程的同步,使线程地并发变为了串行,故效率也应是3倍,又线程切换时会遇到阻塞的情况、再加上切换时的消耗,最后得到1.3)#include <stdio.h>#include <pthr...原创 2019-01-02 19:16:22 · 1596 阅读 · 0 评论 -
高级I/O
阻塞I/O一般的I/O操作为阻塞I/O,比如read和write。阻塞的意思,就是在得不到数据或资源时一直等着,直到拿到了数据或资源。应用的函数如果不能被完成,长时间处于等待结果的状态,我们就称为阻塞I/O。这样会造成CPU空闲。非阻塞I/O非阻塞I / O是指,如果这种I/O操作不能完成,则立即出错返回,表示该操作如果继续执行将会阻塞。在出错返回后,进程或线程可以接着处理下...原创 2019-01-07 11:54:39 · 238 阅读 · 1 评论 -
socket编程
一、字节序1.主机字节序:计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。举例来说,数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11。大端字节序:高位字节在前,低位字节在后,这是人类读写数值的方法。 小端字节序:低位字节在前,高位字节在后,即以0x1122形式储存。计算机电路先处理低位字节,效...原创 2019-01-14 11:43:59 · 187 阅读 · 0 评论 -
Linux 常用命令
1.lsof:查看进程打开的文件信息选项命名:lsof -u 用户名lsof -c 程序名lsof -p 进程IDlsof -ilsof -i:端口号lsof -i tcplsof -i udp2.netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的...原创 2019-03-03 12:07:15 · 87 阅读 · 0 评论 -
C语言类型隐式、强制转换
https://blog.csdn.net/qq_33416447/article/details/85529254在C语言是可以进行类型之间的转换且其中存在两种类型转换的方式强制类型转换隐式类型转换1.强制类型转换强制类型转换的语法(Type)var_name;(Type)value;(想转换的目标类型)变量名或具体数值强制类型转换的结果目标的类型能够容纳目标值...转载 2019-03-04 16:05:40 · 784 阅读 · 0 评论 -
C语言-linux多线程编程
线程共享进程的资源(代码段、数据段、堆、核心段),线程也有自己的独立资源:TCB,线程id,寄存器,栈等;线程分为用户级线程和内核级线程,每个用户级线程都绑定一个内核级线程; 一、多线程的基本函数头文件:pthread.h数据类型:pthread_t(typedef unsigned long int pthread_t;)常用函数:1. 获取线程自身ID。pth...原创 2019-01-02 18:42:57 · 2682 阅读 · 0 评论 -
终端I/O
1.终端I/O的工作方式CPU通过接口控制I/O设备。通常接口有以下一些功能:(1)设置数据的寄存、缓冲逻辑,以适应CPU与外设之间的速度差异,接口通常由一些寄存器或RAM芯片组成,如果芯片足够大还可以实现批量数据的传输;(2)能够进行信息格式的转换,例如串行和并行的转换;(3)能够协调CPU和外设两者在信息的类型和电平的差异,如电平转换驱动器、数/模或模/数转换器等;(4)...原创 2019-01-06 23:54:12 · 342 阅读 · 0 评论 -
C语言——写双向链表代码及感悟
一、代码/**linkedlist*2018/11/29:head_insert;tail_insert;reverse;traversal;*2018/11/30:insert;dele;*xinchiwu*/#include <stdlib.h>#include <stdio.h>typedef struct linkedlistnode {...原创 2018-11-30 23:24:16 · 292 阅读 · 0 评论 -
C语言——写单链表代码及感悟
一、代码 #include <stdio.h>#include <stdlib.h>struct listnode{ char data; struct listnode* nextnode;};struct listnode* tail_creat()//尾插法{ struct listnode *p, *head, *s;...原创 2018-11-28 23:18:55 · 393 阅读 · 0 评论 -
C语言——存储类、作用域、生存期、链接属性,以static的作用为例
一、总结存储类和生存期相关联;作用域、链接属性各成一派;具体来讲:1.存储类和生存期相关联:存储类分为代码段(文本段和只读数据段)、数据段(初始化非0的全局变量和静态变量,全局生存期)、bss段(显式或隐式初始化为0的全局变量和静态变量,全局生存期)、堆(手动动态分配的变量,取决于动态分配和释放的时间)、文件映射区、栈(程序自动分配的变量,生存期为从函数开始到函数结束)、内核映射区...原创 2018-12-19 16:13:23 · 212 阅读 · 0 评论 -
C语言——gcc命令
一、通用命令选项;(区分大小写) -Wall:将所有的警告信息输出到stdout -save-temps:将中间文件.i\.s\.o都保存到当前目录下 -o 文件名:指定输出的文件名 -g 可执行程序包含调试信息 size 文件名:可以查看程序中各存储段的情况,dec表示十进制 -std=c99可处理C99代码 -ansi 是使用c++9...原创 2018-12-17 09:27:19 · 1169 阅读 · 0 评论 -
C语言——gdb调试
一、gdb基础前提:在gcc编译时,要输入-g选项;步骤:1.gdb进入GDB调试模式2.file 可执行文件名 3.pwd显示当前目录4.l列出源码(前提是编译时选择了-g选项)5.b 行号:设置断点; tb 行号 :设置临时性断点,与断点不同,临时断点只在第一次执行时起作用6.r:开始执行单步执行:n(TIPs1:可以按回车重复上一次操作,在单步调试时这个feat...原创 2018-12-17 09:32:36 · 525 阅读 · 0 评论 -
C语言——栈与队列的实现
栈与队列都是受限的线性表,均可以通过顺序表(数组)和链表两种方式得到实现。只不过栈是FILO,队列是FIFO,即栈和队列在出和入的方式上有所不同。而通过数组和链表实现的区别,即为数组与链表本身的区别:数组的存储空间是连续的,不可动态扩展;链表的存储空间是不连续的,可以动态扩展。下面具体来说。一、栈的实现:栈有栈底和栈顶,栈底是固定的,栈顶指向栈最顶上的第一个数据;数据的入栈和出栈只能在栈顶...原创 2018-12-28 13:43:29 · 2968 阅读 · 1 评论 -
C语言——指针和数组地址、链表和数组的区别
1.指针和数组地址的区别:指针是一个变量,存储的是相应数据类型的地址;数组地址是一个地址常量;所以,指针可以进行增量运算,而数组名(指向该数组的地址,即数组首元素的地址)不可以进行增量运算;但在函数传参时,情况有所变化,将一个数组传入函数,函数会将形参的数组名退化成一个指针,此时,在函数内,数组名可以进行增量运算。2.链表和数组的区别:数组的优点:随机访问性强 ...原创 2018-12-28 14:11:25 · 937 阅读 · 0 评论 -
C语言——内存池代码的阅读
写内存池,是为了锻炼链表的使用能力,以及学一点工程实用的东西。内存池分为单线程和多线程的,固定分配长度和可变分配长度的;这里,我看了两套代码,均是单线程的,一套讲分配固定长度的,一套将分配可变长度的。 代码一:Github上面找到的一套开源代码:实现分配可变长度的内存代码链接如下:https://github.com/userpro/MemoryPool作者的构思是:1.数据...原创 2018-12-22 21:03:58 · 439 阅读 · 0 评论 -
C语言——内存池的设计和实现
看完了之前两套代码后,我打算自己动手实现一个简单的内存池,我的思路与代码二类似,这样做的好处是可以给不同的对象使用不同的内存池,可以相互隔绝:memorypool下面挂一个memory的链表,可以选择动态扩展长度,每次分配和回收都以memory为单位;memorypool中的free_list 采用单链表实现,used_list采用双链表实现,因为考虑到,分配给某个对象实例一个内存空间后,方便查看...原创 2018-12-24 22:51:09 · 2829 阅读 · 0 评论 -
linux文件夹作用
博文地址:https://www.cnblogs.com/yoke/p/7217019.html/根目录包含了几乎所的文件目录。相当于中央系统。进入的最简单方法是:cd /。/boot 引导程序,内核等存放的目录这个目录,包括了在引导过程中所必需的文件。在最开始的启动阶段,通过引导程序将内核加载到内存,完成内核的启动(这个时候,虚拟文件系统还不存在,加载的内核虽然是从硬盘读取的,...转载 2019-01-04 17:21:42 · 81 阅读 · 0 评论 -
Linux常用的头文件及含义
博文地址:http://blog.csdn.net/wubin1124/archive/2009/12/09/4971359.aspx 首先说明几点:1 Linux内核所在目录为/usr/src/kernels/...2 Linux头文件所在目录为/usr/include/...3 找不见头文件可以用find命令查找 find / -name *.h POSIX标准定义...转载 2019-01-04 17:23:30 · 426 阅读 · 0 评论 -
Linux文件系统
1.文件系统架构 硬盘驱动 常见的硬盘类型有PATA, SATA和AHCI等,在Linux系统中,对不同硬盘所提供的驱动模块一般都存放在内核目录树drivers/ata中,而对于一般通用的硬盘驱动,也许会直接被编译到内核中,而不会以模块的方式出现,可以通过查看/boot/config-xxx.xxx文件来确认 General Block Device Layer 这...转载 2019-01-04 17:33:28 · 125 阅读 · 0 评论 -
文件操作-系统调用与标准I/O库
1. 文件描述符与文件指针的关系文件描述符:每个进程的PCB里都有任务描述符表,任务描述符表其实是个数组,里面存放一个指针,指向已打开文件的file结构体,该结构体包含文件当前的位移量、打开模式、inode指针等信息。系统调用的操作对象为文件描述符。当开始运行程序时,也就是系统开始运行时,它一般会有三个已经打开的文件描述符。他们是: 0:标准输入 1:标准输出 ...原创 2019-01-06 23:18:24 · 825 阅读 · 3 评论 -
errno、strerror与perror
全局变量errno经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。 在程序代码中包含 #include <errno.h>,然后每次程序调用失败的时候,系统会自动用用错误代码填充errno...原创 2019-01-06 23:24:05 · 152 阅读 · 0 评论 -
C语言——写循环链表代码及感悟
一、代码#include <stdio.h>#include <stdlib.h>struct listnode{ char data; struct listnode* nextnode;};struct listnode* tail_creat()//尾插法{ struct listnode *p, *head, *s; ...原创 2018-12-10 23:35:39 · 323 阅读 · 0 评论